Como rodar docker-compose tendo vários containers em repositórios diferentes
Hello everybody!
Estou com um projeto que roda em micro serviços, todos eles tem seus repositórios independentes, cada um com seu Dockerfile, docker-compose.yml e tudo mais. São 14 serviços independentes.
O problema é que quando quero rodar todo o ecossistema preciso ir de pasta em pasta e executar os respectivos docker compose up
em cada serviço, além de ajustar váriaveis de ambiente como portas, urls e etc em cada projeto.
Teria alguma maneira de fazer uma espécie de "super" docker-compose.yml com todos os containers, networks e tudo mais, e quando quisesse rodar o ecossistema daria um docker compose up
e isso subiria todos os containers?
Obrigado por ler até aqui :)
Pegando o gancho do que falou o @glink aí em cima, eu tenho o mesmo "problema" em alguns projetos e também costumo dividí-los em repositórios, cada um com suas definições.
Minha recomendação pra juntar o útil ao agradável, é criar um repositório no Git contendo submódulos com todos os repositórios e, na raiz desse repositório, criar um docker-compose completo com todos. Como na imagem abaixo, de um repositório meu:
Nesse docker-compose você coloca todos os seus serviços, networks e volumes. Recomendo, caso julgue necessário, criar um arquivo .env com todas as variáveis de ambiente compartilhadas pra facilitar sua vida e referenciar no compose como ${NOME_VARIAVEL}. Assim você evita ter que alterar todos os serviços caso precise alterar uma variável compartilhada por mais de um.
Espero ter ajudado.
Opah o que eu normalmente tento fazer eh ter cada microservico num repositorio. Em cada serviço crio uma imagem docker independente, e depois o deploy seja ele para que ambiente for utilizaria essas imagens docker.
In prod/testing posso usar kubernetes para gerir os deployments, e no ambiente de dev posso ter um docker compose que combina e configura os serviços para trabalhar...
Mas isto vem da minha forma de trabalhar, BE com docker faz uma api no FE normalmente os meus colegas usam o servidor do npm...
PS: espero ter ajudado...
A ideia do docker-composer é justamente agrupar esses diversos microserviços, criar dependencia entre eles, conectar tudo em rede, etc.. etc...
Geralmente você vai ter um docker-composer na pasta raiz do projeto e dentro desse composer você cria os "services" pra cada micro serviço que estão nas subpastas.
Dai com docker-compose up -d voce sobre tudo de uma vez e com docker-compose down você derruba tudo.
Fez sentido ou seu caso é mais específico? Se for diferente, compartilha mais detalhes pra gente bater cabeça juntos