मैं अंत में दोनों कंटेनरों को जोड़ने का प्रबंधन कर सका। दस्तावेज़ीकरण उद्देश्यों के लिए मेरे निष्कर्ष यहाँ हैं।
मुख्य बिंदु
docker-composeसंस्करण 2 एकbridgeबनाता है नेटवर्क और इसमें सभी कंटेनर जोड़ता है।mongodइस नेटवर्क के बारे में पता नहीं है और इसलिए उस आईपी के लिए बाध्य नहीं है। डिफ़ॉल्ट रूप से, केवल127.0.0.1. से जुड़ता हैmongoimportकंटेनर नाम का उपयोग करके कनेक्शन स्थापित नहीं कर सका, भले ही इसे कंटेनर आईपी में अनुवादित किया जाना चाहिए।
समाधान
- मोंगोडब के लिए एक
networkकी स्पष्ट परिभाषा के माध्यम से एक स्थिर आईपी असाइन करें - इनिट मोंगो कंटेनर के साथ
--bind_ipउस स्थिर आईपी को इंगित करने वाला ध्वज - होस्टनाम के बजाय
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
मोंगो-बीज/डॉकरफाइल
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