连接两个docker容器nodejs和mongodb
问题描述:
我正在尝试使用网络泊坞窗连接两个容器,但是由于某种原因,我遇到了错误:
I'm trying to connect two conainers using networks docker, but for some reason I'm getting a error:
MongoNetworkError:首次连接时无法连接到服务器[db:27017] [Error:connect ECONNREFUSED 172.22.0.3:27017
MongoNetworkError: failed to connect to server [db:27017] on first connect [Error: connect ECONNREFUSED 172.22.0.3:27017
有什么建议吗?
谢谢!
docker-compose.yml
docker-compose.yml
version: '3'
services:
nodejs:
build:
context: .
dockerfile: Dockerfile.dev
image: nodejs
container_name: nodejs
restart: unless-stopped
env_file:
- .env
environment:
- MONGO_USERNAME=$MONGO_USERNAME
- MONGO_PASSWORD=$MONGO_PASSWORD
- MONGO_HOSTNAME=db
- MONGO_PORT=$MONGO_PORT
- MONGO_DB=$MONGO_DB
ports:
- "3000:3000"
volumes:
- .:/home/node/app
- node_modules:/home/node/app/node_modules
networks:
- app-network
command: /home/node/app/node_modules/.bin/nodemon app.js
db:
image: mongo:4.2.9-bionic
container_name: db
restart: unless-stopped
env_file:
- .env
environment:
- MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME
- MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD
volumes:
- dbdata:/data/db
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
dbdata:
node_modules:
答
当您的Node.js应用程序尝试连接到容器中时,容器内部的MongoDB是否可能尚未启动?
Is it possible that MongoDB inside the container has not yet started when your Node.js app is trying to connect to it?
您应该尝试将 nodejs
服务标记为取决于 db
服务.
You should try marking nodejs
service as dependent on db
service.