O que eu quero fazer é separar meus ajustes específicos do ambiente em um override.yml, nada muito especial ... no entanto, minhas substituições serão exatamente as mesmas para cada serviço implantado e eu quero evitar ter que escrever a mesma substituição para todos serviço único (e continuamente adicionar novas seções à substituição conforme novos serviços são introduzidos).
Em vez disso, gostaria de criar uma definição que diga "aplique a esta substituição para todos os serviços". Já existe tal conceito que talvez eu esteja perdendo?
Exemplo ...
docker-compose.yml:
aservice:
image: whatever1
environment:
FOO: BAR
outro docker-compose.yml:
anotherservice:
image: whatever2
my docker-compose.override.yml:
<magickeyword>:
environment:
FLIBBLE: flobble
dns:
- server1
- server2
Agora, cada serviço implantado teria servidor1 e servidor2 DNS e a variável de ambiente FLIBBLE.
Sei que poderia fazer isso se todos os serviços estivessem estendendo o mesmo serviço de base, pois eu poderia aplicar a substituição a isso, mas há alguma maneira de definir a substituição global / padrão sem uma extensão comum?
No momento, tenho um hack que envolve uma varredura de substituição gerada para quaisquer serviços definidos e gera o arquivo de substituição instantaneamente, mas parece um caso de uso em que não posso ser a primeira pessoa a encontrar, então me pergunto se talvez eu acabo de perder a solução óbvia para isso no compe.
Você poderia apenas ter um arquivo base.yml
em cada pasta de projeto com um serviço base
contendo apenas sua chave environment
e, em seguida, fazer com que cada serviço estenda o serviço base
.
Esta não é mais uma boa solução, visto que extends:
foi removido em 3.x https://github.com/moby/moby/issues/31101
@saml confira https://github.com/docker/compose/pull/5140
Comentários muito úteis
@saml confira https://github.com/docker/compose/pull/5140