Cuối cùng tôi có thể quản lý để kết nối cả hai vùng chứa. Phát hiện của tôi ở đây cho mục đích tài liệu.
Những điểm chính
-
docker-compose
phiên bản 2 tạo ra mộtbridge
mạng và thêm tất cả các vùng chứa vào đó. -
mongod
không biết về mạng này và do đó không liên kết với ip đó. Theo mặc định, chỉ liên kết với127.0.0.1
-
mongoimport
không thể thiết lập kết nối bằng cách sử dụng tên vùng chứa, mặc dù nó phải được dịch sang ip vùng chứa.
Giải pháp
- Gán một IP tĩnh cho mongodb thông qua định nghĩa rõ ràng về mạng
network
- Init vùng chứa mongo với
--bind_ip
cờ trỏ đến ip tĩnh đó - Sử dụng địa chỉ ip thay vì tên máy chủ với
mongoimport
docker -omp.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