我有两个docker-compose.yml
文件。在第一个中,我运行一个mongodb实例:
version: '3'
services:
mongodb:
image: mongo:latest
container_name: "mongodb"
volumes:
- ./data/db:/data/db
ports:
- 27017:27017
在第二个中,我运行我的Web应用程序,并希望将其与mongodb容器链接:
version: '3'
services:
webapp:
build:
context: .
external_links:
- mongodb
ports:
- 8080:8080
但是,当我运行Web应用程序时,出现连接错误。我正在连接到该URI:
const DB_URI = 'mongodb://mongodb:27017/mydb';
但是我得到MongoNetworkError
。我想念什么?
答案 0 :(得分:1)
我建议您在同一docker-compose文件中使用这两项服务,并将 external_links
替换为 links
version: '3'
services:
mongodb:
image: mongo:latest
container_name: "mongodb"
volumes:
- ./data/db:/data/db
ports:
- 27017:27017
webapp:
build:
context: .
links:
- mongodb
depends_on:
- mongodb
ports:
- 8080:8080
如何在启动Webapp之前确保mongodb已启动并运行?
AFAIK, links
会处理这种情况。
或
您可以使用depends_on
答案 1 :(得分:0)
已解决。无法访问主机,因为它们位于不同的网络中。创建网络(https://docs.docker.com/compose/networking/)并在该网络中运行这两个服务即可解决问题。