Node.js 无法使用docker上的网络连接到docker容器中运行的mongodb,其他容器具有节点js
我在docker中创建了一个名为“favorites net”的网络,以及两个名为“Fovorites net”的容器:- 1) 。mongodb(docker hub mongodb中正常运行的映像) 2) 。收藏夹(具有尝试连接mongodb数据库的简单nodejs项目) 我使用的连接代码Node.js 无法使用docker上的网络连接到docker容器中运行的mongodb,其他容器具有节点js,node.js,mongodb,docker,dockerfile,Node.js,Mongodb,Docker,Dockerfile,我在docker中创建了一个名为“favorites net”的网络,以及两个名为“Fovorites net”的容器:- 1) 。mongodb(docker hub mongodb中正常运行的映像) 2) 。收藏夹(具有尝试连接mongodb数据库的简单nodejs项目) 我使用的连接代码 mongoose.connect( // 'mongodb://localhost:27017/swfavorites', ###Working Properly by using this###
mongoose.connect(
// 'mongodb://localhost:27017/swfavorites', ###Working Properly by using this###
'mongodb://mongodb:27017/swfavorites', ### Not Working by using this###
{ useNewUrlParser: true },
(err) => {
if (err) {
console.log(err);
} else {
app.listen(3000);
}
}
);
Dockerfile
FROM node
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["node", "app.js"]
docker build -t favorites-node .
常用于建立形象
FROM node
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["node", "app.js"]
docker build -t favorites-node .
用于运行节点Js容器的命令
docker run --name favorites --network favorites-net -d -p
3000:3000 favorites-node
MongoDB容器处于运行状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
56aeba0a7f2f mongo "docker-entrypoint.s…" 55 minutes ago Up 14 seconds 27017/tcp mongodb
检查docker日志收藏夹时出错
MongoNetworkError: failed to connect to server [mongodb:27017] on first connect [Error: getaddrinfo ENOTFOUND mongodb
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:67:26) {
name: 'MongoNetworkError'
}]
at Pool.<anonymous> (/app/node_modules/mongodb/lib/core/topologies/server.js:438:11)
at Pool.emit (node:events:376:20)
at /app/node_modules/mongodb/lib/core/connection/pool.js:562:14
at /app/node_modules/mongodb/lib/core/connection/pool.js:995:11
at /app/node_modules/mongodb/lib/core/connection/connect.js:32:7
at callback (/app/node_modules/mongodb/lib/core/connection/connect.js:280:5)
at Socket.<anonymous> (/app/node_modules/mongodb/lib/core/connection/connect.js:310:7)
at Object.onceWrapper (node:events:483:26)
at Socket.emit (node:events:376:20)
at emitErrorNT (node:internal/streams/destroy:188:8)
at emitErrorCloseNT (node:internal/streams/destroy:153:3)
at processTicksAndRejections (node:internal/process/task_queues:80:21)
MongoNetworkError:第一次连接时未能连接到服务器[mongodb:27017]。[Error:getaddrinfo ENOTFOUND mongodb]
在GetAddrInfoReqWrap.onlookup[作为完成](节点:dns:67:26){
名称:“MongoNetworkError”
}]
在游泳池。(/app/node_modules/mongodb/lib/core/topologies/server.js:438:11)
在Pool.emit(节点:事件:376:20)
at/app/node_modules/mongodb/lib/core/connection/pool.js:562:14
at/app/node_modules/mongodb/lib/core/connection/pool.js:995:11
at/app/node_modules/mongodb/lib/core/connection/connect.js:32:7
回调时(/app/node\u modules/mongodb/lib/core/connection/connect.js:280:5)
在插座上。(/app/node_modules/mongodb/lib/core/connection/connect.js:310:7)
at Object.onceWrapper(节点:事件:483:26)
在Socket.emit(节点:事件:376:20)
发射错误(节点:内部/流/销毁:188:8)
在emitErrorCloseNT(节点:内部/流/销毁:153:3)
在处理和拒绝时(节点:内部/处理/任务队列:80:21)
我的MongoDB出现问题与docker中运行nodejs容器的网络不同,现在工作正常
用于在同一网络上运行MongoDB的命令
docker run -d --name mongodb --network favorites-net mongo
mongodb端口未发布 请在端口已发布的情况下运行mogodb容器
docker run-d--名称mongodb-p 27017:27017--网络收藏夹net mongo
请不要使用屏幕截图显示code@Anatoly很抱歉,我已删除屏幕截图并重新格式化。你能告诉我如何解决这个问题吗?如果可能的话,来自终端的错误也应该以文本的形式出现。请显示描述这两个容器的docker文件。你不使用docker compose吗?我还添加了终端获取和上面所有其他文件的错误。好的,谢谢,我的MongoDB的解决方案问题与docker中运行我的nodejs容器的网络不同现在它的工作方式我们对node js和docker容器使用相同的网桥任何它们内部连接的都表明我们不需要保护外部端口-p:它可以正常工作。是的,你是对的@MayankRai,在用户定义的网桥网络中,所有端口对连接到网络的所有服务开放