Jeg kunne endelig nå at få tilsluttet begge containere. Mine resultater her til dokumentationsformål.
Hovedpunkter
docker-compose
version 2 opretter enbridge
netværk og føjer alle containerne til det.mongod
er ikke opmærksom på dette netværk og binder sig derfor ikke til den ip. Som standard binder den kun til127.0.0.1
mongoimport
kunne ikke etablere forbindelse ved hjælp af containernavn, selvom det formodes at være oversat til containerens ip.
Løsning
- Tildel en statisk IP til mongodb'en gennem den eksplicitte definition af et
network
- Init mongo-beholder med
--bind_ip
flag, der peger på den statiske ip - Brug IP-adresse i stedet for værtsnavn med
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