Finalmente pude lograr conectar ambos contenedores. Mis hallazgos aquí con fines de documentación.
Puntos principales
docker-compose
la versión 2 crea unbridge
red y le agrega todos los contenedores.mongod
no es consciente de esta red y, por lo tanto, no se une a esa ip. De forma predeterminada, se vincula solo a127.0.0.1
mongoimport
no se pudo establecer la conexión usando el nombre del contenedor, aunque se supone que debe traducirse a la ip del contenedor.
Solución
- Asigne una IP estática para mongodb a través de la definición explícita de una
network
- Iniciar contenedor mongo con
--bind_ip
bandera que apunta a esa ip estática - Use la dirección IP en lugar del nombre de host con
mongoimport
docker-compose.yml
version: '2'
services:
mongodb:
image: mongo:3.2
ports:
- "27017:27017"
networks:
mongo_net:
ipv4_address: 172.16.0.1
command: mongod --bind_ip 127.0.0.1,172.16.0.1
mongo-seed:
build: ./mongo-seed
networks:
mongo_net:
depends_on:
- mongodb
networks:
mongo_net:
driver: bridge
ipam:
config:
- subnet: 172.16.0.0/24
gateway: 172.16.0.254
mongo-seed/Dockerfile
FROM mongo:3.2
COPY init.json /init.json
CMD mongoimport --host 172.16.0.1 --db test --collection users \
--type json --file /init.json --jsonArray