J'ai finalement réussi à connecter les deux conteneurs. Mes découvertes ici à des fins de documentation.
Points principaux
docker-compose
la version 2 crée unbridge
réseau et y ajoute tous les conteneurs.mongod
n'est pas au courant de ce réseau et ne se lie donc pas à cette adresse IP. Par défaut, se lie uniquement à127.0.0.1
mongoimport
n'a pas pu établir de connexion en utilisant le nom du conteneur, même s'il est censé être traduit en adresse IP du conteneur.
Solution
- Attribuez une adresse IP statique à mongodb via la définition explicite d'un
network
- Initier le conteneur mongo avec
--bind_ip
drapeau pointant vers cette adresse IP statique - Utilisez l'adresse IP au lieu du nom d'hôte avec
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