its*_*sMe 6 mongodb node.js docker docker-compose
我将mongoDB与NodeJS后端一起使用。问题是我遇到以下错误
节点:16)UnhandledPromiseRejectionWarning:MongoNetworkError:首次连接时无法连接到服务器[localhost:27017] [MongoNetworkError:连接ECONNREFUSED 127.0.0.1:27017]
这是我的码头工人组成
version: '3.4'
services:
db:
image: mongo:latest
ports:
- '27017:27017'
rest-api-node:
build: .
ports:
- '5000:5000'
links:
- db
restart: on-failure
Run Code Online (Sandbox Code Playgroud)
我也尝试过depends_on
,没有用。
在后端,我很猫鼬作为与DB通信的中间件。这是我的一部分index.js
mongoose.Promise = global.Promise
mongoose.connect('mongodb://localhost/demo')
app.listen(port, () => console.log("live"))
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用诺言,虽然没有变化。请帮帮我。提前致谢
完成错误日志
在游泳池。(/app/node_modules/mongodb-core/lib/topologies/server.js:505:11)rest-api-node_1 | 在Pool.emit(events.js:180:13)rest-api-node_1 | 在连接。(/app/node_modules/mongodb-core/lib/connection/pool.js:329:12)rest-api-node_1 | 在Object.onceWrapper(events.js:272:13)rest-api-node_1 | 在Connection.emit(events.js:180:13)rest-api-node_1 | 在套接字。(/app/node_modules/mongodb-core/lib/connection/connection.js:245:50)rest-api-node_1 | 在Object.onceWrapper(events.js:272:13)rest-api-node_1 | 在Socket.emit(events.js:180:13)rest-api-node_1 | 在emitErrorNT(internal / streams / destroy.js:64:8)rest-api-node_1 | 在process._tickCallback(内部/进程/next_tick.js:178:19)处rest-api-node_1 | 名称:“ MongoNetworkError”,rest-api-node_1 |
消息:“第一次连接[MongoNetworkError:连接ECONNREFUSED 127.0.0.1:27017]时,无法连接到服务器[localhost:27017]”}
ham*_*nia 22
我有同样的问题,其他解决方案对我不起作用,但我这样做了
对于 mongo URI,您必须使用 MongoDBservice name
来代替127.0.0.1
,或者localhost
例如,在下面的 docker-compose 文件中,我的 mongo 服务名称是mongodb-myapp
,我像这样更改 URI mongodb://mongodb-myapp:27017/myapp
,它对我有用
services:
boilerplate-api-app:
build: .
environment:
- MONGO_URI=mongodb://mongodb-myapp:27017/myapp
volumes:
- .:/app
ports:
- "5000:5000"
depends_on:
- mongodb-myapp
mongodb-myapp:
image: mongo
ports:
- "27017:27017"
Run Code Online (Sandbox Code Playgroud)
默认情况下,Compose为您的应用设置单个网络。服务的每个容器都加入默认网络,并且都可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名下被发现。
根据您的docker-compose.yaml
文件,您127.0.0.1:27017
只能在主机上访问mongo容器。为了从NodeJS后端容器访问它,您应该使用db:27017
。
归档时间: |
|
查看次数: |
7035 次 |
最近记录: |