Contanto que sejam apenas dois, você pode dar um nome a um "mock" e um nome de host. O Docker coloca os dois em /etc/hosts
Então, algo como:
mock:
[definitions of how to run 'mock']
container_name: enet
hostname: ff
Estamos executando um monte de serviços em seus próprios containers via Docker, e os conectamos usando o Docker Compose.
Anteriormente, usamos links para nos referirmos a outros hosts, mas o problema é que, se um contêiner for reiniciado e receber um novo endereço IP, os nós vinculados não saberão disso e pare de trabalhar.
Então fomos criar uma rede e nomear nossos hosts e isso funciona bem. No entanto, temos um componente simulado que usamos para testes que substitui dois dos outros contêineres. Eu poderia configurar isso através de links facilmente, mas não sei como fazer isso com a rede.
Originalmente, era como:
mm:
extends:
file: common-service.yml
service: mm-container
links:
- mock:enet
- mock:ff
(onde mm
é o contêiner que sabe sobre os contêineres enet
e ff
e, nesse arquivo de composição usado para teste, os vinculamos ao contêiner mock
).
Eu tentei adicionar isso em vez dos links:
extra_hosts:
- "enet:mock"
- "ff:mock"
(onde enet
e ff
são os nomes de host ridicularizados), mas é claro que isso adicionaria essas linhas a / etc / hosts como-é, portanto nenhuma resolução de nome de host ocorre.
Existe uma solução para isso no Docker-land, ou temos que reescrever nossa ferramenta de zombaria?
Contanto que sejam apenas dois, você pode dar um nome a um "mock" e um nome de host. O Docker coloca os dois em /etc/hosts
Então, algo como:
mock:
[definitions of how to run 'mock']
container_name: enet
hostname: ff
Tags docker