Estou tentando fornecer um endereço IP estático aos contêineres. Eu entendo que tenho que criar uma rede personalizada. Eu o crio e a interface de ponte está ativa na máquina host (Ubuntu 16.x). Os contêineres obtêm IP desta sub-rede, mas não o IP estático fornecido.
Aqui está meu docker-compose.yml:
version: '2'
services:
mysql:
container_name: mysql
image: mysql:latest
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3306:3306"
networks:
- vpcbr
apigw-tomcat:
container_name: apigw-tomcat
build: tomcat/.
ports:
- "8080:8080"
- "8009:8009"
networks:
- vpcbr
depends_on:
- mysql
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
aux_addresses:
mysql: 10.5.0.5
apigw-tomcat: 10.5.0.6
Os contêineres recebem 10.5.0.2 e 10.5.0.3, em vez de 5 e 6.
docker
docker-compose
Chenchuk
fonte
fonte
Respostas:
Observe que não recomendo um IP fixo para contêineres no Docker, a menos que você esteja fazendo algo que permita o roteamento de fora para dentro de sua rede de contêiner (por exemplo, macvlan). O DNS já existe para descoberta de serviço dentro da rede de contêineres e oferece suporte ao dimensionamento de contêineres. E fora da rede do contêiner, você deve usar portas expostas no host. Com essa isenção de responsabilidade, aqui está o arquivo de composição que você deseja:
fonte
Eu estava enfrentando algumas dificuldades com uma variável de ambiente que está com nome personalizado (não com convenção de porta / nome de contêiner para KAPACITOR_BASE_URL e KAPACITOR_ALERTS_ENDPOINT). Se dermos o nome do serviço neste caso não resolveria o ip como
Acima
http://[**kapacitor**]:9092
não resolveriahttp://172.20.0.2:9092
Resolvi os problemas de IPs estáticos usando configurações de sub-rede.
fonte