gpt4 book ai didi

node.js - docker/nodejs/mongodb部署:MongooseError [MongooseServerSelectionError]:连接超时

转载 作者:行者123 更新时间:2023-12-02 19:51:14 28 4
gpt4 key购买 nike

更新2

我面临另一个错误
如果我按如下方式使用路径,则会收到“无效的卷规格”错误
甚至将路径更改为“C:/docker-entrypoint-initdb.d /”,init-mongo.sh也不会执行,然后我得到“UserNotFound:找不到数据库“admin”的用户“xxxx”

    volumes:
- ./init-mongo/:/docker-entrypoint-initdb.d/
- dbdata:/data/db

所以
我切换到linux容器,所有错误消息都消失了。

更新

在本地主机上禁用mongodb服务后,我已经解决了我的问题
net stop MongoDB

并使用端口27017
mongodb:
....
ports:
- "27017:27017"
.....

但是我想知道为什么我不能将27017端口更改为其他端口?
我更改端口,因为如果mongodb在我的计算机上运行(使用27017端口),我将收到以下错误消息,谢谢。
for mongodb  Cannot start service mongodb: failed to create endpoint mongodb on network server_app_network: hnsCall failed in Win32: The process cannot access the file because it is being used by another process. (0x20)

原始

我在Windows 10上使用Docker Windows容器。
经过两天的努力,我仍然无法成功部署项目。
我的配置如下,谢谢帮助..

server.js
const dbUrl = "mongodb://mongodb:27018/";
mongoose
.connect(`${dbUrl}mydb`, { useUnifiedTopology: true, useNewUrlParser: true })
.then(res => {
db = mongoose.connection;
app.listen(port, () => {
console.log(`listening on port ${port}`);
});
})
.catch(error => console.log(error));

docker-compose.yml
version: "3"
services:
express-server:
build:
context: .
dockerfile: Dockerfile
image: express-server
container_name: express-server
restart: unless-stopped
ports:
- "3000:3000"
links:
- mongodb
depends_on:
- mongodb
networks:
- app_network

mongodb:
image: mongo
container_name: mongodb
restart: unless-stopped
ports:
- "27018:27018"
networks:
- app_network
volumes:
dbdata:
networks:
app_network:
driver: nat


在运行docker-compose up --build -d之后
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                 NAMES
7fac2380c803 express-server "node server.js" 57 seconds ago Up 43 seconds 0.0.0.0:3000->3000/tcp express-server
9afc21569a1a mongo "mongod --bind_ip_all" About a minute ago Up 57 seconds 27017/tcp, 0.0.0.0:27018->27018/tcp mongodb

最佳答案

我认为您需要在配置中传递dbName。

mongoose.connect(
connectionString,
{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true,
dbName: 'database-name', // IMPORTANT TO HAVE IT HERE AND NOT IN CONNECTION STRING
},
err => { throw err; },
);

关于node.js - docker/nodejs/mongodb部署:MongooseError [MongooseServerSelectionError]:连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60574391/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com