Най-накрая успях да свържа двата контейнера. Моите констатации тук за целите на документацията.
Основни точки
docker-compose
версия 2 създаваbridge
мрежа и добавя всички контейнери към нея.mongod
не е наясно с тази мрежа и следователно не се свързва с този ip. По подразбиране се свързва само с127.0.0.1
mongoimport
не можа да установи връзка, използвайки името на контейнера, въпреки че се предполага, че то трябва да бъде преведено в IP адреса на контейнера.
Решение
- Задайте статичен IP за mongodb чрез изричното определение на
network
- Иницииране на монго контейнер с
--bind_ip
флаг, сочещ към този статичен ip - Използвайте 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
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