Eu tenho um arquivo de composição (3) do docker no qual estou fazendo um docker stack deploy
on. Eu faço isso em um pipeline Jenkins.
A maneira como eu lido com tags é que eu defino uma variável de ambiente API_TAG
e a (parte relevante do) arquivo de composição do docker correspondente se parece com isso.
version: '3'
services:
api:
image: registry:5000/api:${API_TAG}
Como faço para lidar com tags para outros serviços nesse arquivo de composição de pilha / docker que eu não criei apenas? O pipeline com o qual estou lidando apenas cria um aplicativo de API, não os três bancos de dados dos quais ele depende. No entanto, esses bancos de dados também possuem tags específicas (não apenas latest
). Eu realmente preciso consultar o cluster swarm para os serviços e tags atualmente em execução para esses bancos de dados para que docker stack deploy
não estrague nada?
Idealmente, seu arquivo de composição de pilha deve conter todos os serviços em execução como contêineres para esse aplicativo, então sim, se você tiver um contêiner de banco de dados que precisa ser incluído, ele deve estar no arquivo de composição e você gerencia a versão/tag em execução nele compor arquivo.
A ideia aqui é que você pode criar um arquivo de composição (ou compor arquivo e substituir arquivo ) que funcione
docker-compose up
para desenvolvimento local edocker stack deploy
para implantações de enxame.Uma maneira alternativa, mas IMO mais complexa, é executar outros serviços em seu arquivo de composição/pilha e usar redes de sobreposição criadas manualmente para garantir que estejam todas nas mesmas redes virtuais do docker.