ようやく両方のコンテナを接続することができました。文書化のためにここにある私の発見。
要点
-
docker-compose
バージョン2はbridge
を作成します ネットワークに接続し、すべてのコンテナを追加します。 -
mongod
はこのネットワークを認識していないため、そのIPにバインドしません。デフォルトでは、127.0.0.1
にのみバインドします -
mongoimport
コンテナIPに変換されるはずなのに、コンテナ名を使用して接続を確立できませんでした。
ソリューション
-
network
の明示的な定義を通じて、mongodbに静的IPを割り当てます -
--bind_ip
を使用してmongoコンテナを初期化します その静的IPを指すフラグ -
mongoimport
でホスト名の代わりにIPアドレスを使用する
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