Het lukte me eindelijk om beide containers met elkaar te verbinden. Mijn bevindingen hier voor documentatiedoeleinden.
Belangrijkste punten
docker-compose
versie 2 maakt eenbridge
netwerk en voegt er alle containers aan toe.mongod
is niet op de hoogte van dit netwerk en bindt zich daarom niet aan dat ip. Bindt standaard alleen aan127.0.0.1
mongoimport
kon geen verbinding tot stand brengen met de containernaam, ook al zou het vertaald moeten worden naar het container-ip.
Oplossing
- Wijs een statisch IP-adres toe aan de mongodb via de expliciete definitie van een
network
- Init mongo-container met
--bind_ip
vlag die naar dat statische ip wijst - Gebruik ip-adres in plaats van hostnaam met
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