I thought of using Docker. My Docker(file) would pull files from each individual git repository (of WordPress, MySQL, Laravel, static content). So, in order to make some changes I would simply make them and push them to git to some branch, e.g. called release. Then, the last thing to do would be to use the Restart Application button on AWS Elastic Beanstalk.

Changes made on WordPress will be lost. In order to make some changes to WordPress I would need to run separate Docker, make changes and then push these changes to git. I can live with that, since there won’t be any significant changes to WordPress during its up-time.

Is this approach alright? Or maybe there is some better way to handle this?

I just want these things to scale easily and without additional machines when it’s not needed (I could have additional machine for MySQL but that’s costly, I wish to have it all on one machine).