Ich habe es endlich geschafft, beide Container miteinander zu verbinden. Meine Erkenntnisse hier zu Dokumentationszwecken.
Hauptpunkte
docker-composeVersion 2 erstellt einebridgeNetzwerk und fügt ihm alle Container hinzu.mongodist sich dieses Netzwerks nicht bewusst und bindet sich daher nicht an diese IP. Bindet standardmäßig nur an127.0.0.1mongoimportKonnte 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
networkzu - Mongo-Container mit
--bind_ipinitialisieren 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