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.
também uso o caprover pra projetos pessoais e implementei ele na empresa que tô trabalhando, 5 nodes via swarm. funciona divinamente. só precisei melhorar o nginx do caprover pq ele por padrão abre as pernas se tiver uma demanda massiva de requisições.