我有两个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
但是,当我运行我的webapp时,我收到连接错误。我正在连接到这个URI:
const DB_URI = 'mongodb://mongodb:27017/mydb';
但我得到了MongoNetworkError
。我错过了什么?
我建议你在同一个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
解决了。主机无法访问,因为它们位于不同的网络中。创建网络(https://docs.docker.com/compose/networking/)并在该网络中运行这两种服务解决了这个问题。