मैं अंत में दोनों कंटेनरों को जोड़ने का प्रबंधन कर सका। दस्तावेज़ीकरण उद्देश्यों के लिए मेरे निष्कर्ष यहाँ हैं।
मुख्य बिंदु
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