Eu uso o CapRover no servidor e docker-compose
local.
No servidor, crio um "app" do Caprover pra cada ambiente, aponto pro repo do GitHub e configuro o deploy automático com base na branch (na aba Deploy). Da pra criar um captain-definition pra escolher qual DockerFile utilizar.
Ele já tem até o nginx próprio pra fazer o relay pra cada "app". Você só precisaria criar um app do MySql e configurar as variáeis de ambiente nos outros apps.
Recomendo dar uma fuçada no CapRover, é bem legal.
PS: Ao usar a mesma instância do MySql, estou assumindo que está usando bancos de dados diferentes.