我在Amazon EC2上遇到此问题。我正在使用docker-compose
设置此NodeJS + Redis + MongoDB应用程序,但是我的NodeJS容器无法与MongoDB容器连接。
运行docker logs
会向我显示此错误:
(节点:5)UnhandledPromiseRejectionWarning:MongoNetworkError:失败 在第一次连接时连接到服务器[mongo:27017] [MongoNetworkError:连接ECONNREFUSED 172.18.0.2:27017]
我没有在EC2上进行任何类型的特定网络设置。我不知道是否有必要。
这是我的 docker-compose :
version: '3'
services:
app:
build: .
ports:
- "8090:8090"
container_name: app
environment:
- NODE_ENV=production
links:
- redis:redis
- mongo:mongo
depends_on:
- redis
- mongo
mongo:
image: mongo:latest
container_name: mongo
volumes:
- ~/data:/data/db
ports:
- "27017:27017"
redis:
image: redis:latest
ports:
- "6379:6379"
container_name: redis
与database.js
连接的mongo
具有以下行:
mongoose.connect(`mongodb://mongo:27017/myapp`)
一个有趣的事实是Redis连接工作正常。
另一个重要的事情是我在计算机上运行了docker-compose
,并且运行正常。也许是EC2上的问题?!
您能帮我解决这个问题吗?我必须更改docker-compose / Dockerfile还是在EC2上丢失某些内容?