Saya akhirnya bisa berhasil menghubungkan kedua wadah. Temuan saya di sini untuk tujuan dokumentasi.
Poin utama
docker-compose
versi 2 membuatbridge
jaringan dan menambahkan semua wadah ke dalamnya.mongod
tidak mengetahui jaringan ini dan karena itu tidak mengikat ke ip itu. Secara default, hanya mengikat ke127.0.0.1
mongoimport
tidak dapat membuat koneksi menggunakan nama container, meskipun seharusnya diterjemahkan ke ip container.
Solusi
- Tetapkan IP statis untuk mongodb melalui definisi eksplisit dari
network
- Init wadah mongo dengan
--bind_ip
bendera menunjuk ke ip statis itu - Gunakan alamat ip sebagai ganti nama host dengan
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