Jag kunde äntligen lyckas koppla ihop båda behållarna. Mina resultat här för dokumentationsändamål.
Huvudpunkter
docker-compose
version 2 skapar enbridge
nätverk och lägger till alla behållare till det.mongod
är inte medveten om detta nätverk och binder därför inte till den ip:n. Som standard binds endast till127.0.0.1
mongoimport
kunde inte upprätta anslutning med behållarens namn, även om det är tänkt att översättas till behållarens ip.
Lösning
- Tilldela en statisk IP för mongodb genom den explicita definitionen av ett
network
- Initiera mongo-behållare med
--bind_ip
flagga som pekar på den statiska ip - Använd IP-adress istället för värdnamn 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