Ich habe es endlich geschafft, beide Container miteinander zu verbinden. Meine Erkenntnisse hier zu Dokumentationszwecken.
Hauptpunkte
docker-compose
Version 2 erstellt einebridge
Netzwerk und fügt ihm alle Container hinzu.mongod
ist sich dieses Netzwerks nicht bewusst und bindet sich daher nicht an diese IP. Bindet standardmäßig nur an127.0.0.1
mongoimport
Konnte keine Verbindung mit dem Containernamen herstellen, obwohl er in die Container-IP übersetzt werden sollte.
Lösung
- Weise eine statische IP für die mongodb durch die explizite Definition eines
network
zu - Mongo-Container mit
--bind_ip
initialisieren Flag, das auf diese statische IP zeigt - Verwenden Sie die IP-Adresse anstelle des Hostnamens mit
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