我终于可以设法连接两个容器。我的发现是出于文档目的。
要点
docker-compose
版本2创建bridge
网络并向其中添加所有容器。mongod
不知道此网络,因此未绑定到该IP。默认情况下,仅绑定到127.0.0.1
mongoimport
即使应该将其转换为容器ip,也无法使用容器名称建立连接。
解
- 通过显式定义为mongodb分配静态IP
network
- 初始化mongo容器,其
--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: - mongodbnetworks: mongo_net: driver: bridge ipam: config: - subnet: 172.16.0.0/24 gateway: 172.16.0.254
mongo-seed / Dockerfile
FROM mongo:3.2COPY init.json /init.jsonCMD mongoimport --host 172.16.0.1 --db test --collection users --type json --file /init.json --jsonArray



