Jeg kunne endelig nå at få tilsluttet begge containere. Mine resultater her til dokumentationsformål.
Hovedpunkter
docker-composeversion 2 opretter enbridgenetværk og føjer alle containerne til det.mongoder ikke opmærksom på dette netværk og binder sig derfor ikke til den ip. Som standard binder den kun til127.0.0.1mongoimportkunne 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_ipflag, 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