【发布时间】:2020-03-07 21:17:46
【问题描述】:
更新 2
我面临另一个错误, 如果我按如下方式使用路径,我将收到“无效的卷规格”错误 甚至将路径更改为“C:/docker-entrypoint-initdb.d/”,init-mongo.sh 将不会被执行,然后我得到“UserNotFound: Could not find user "xxxx" for db "admin"
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
【问题讨论】:
-
express服务在mongodb准备好之前启动。尝试使用命令docker-compose restart express重新启动express服务。或者搜索wait-fordocker compose 解决方案。 -
@hoangdv express 服务确实重启了几次,但还是出现连接错误
标签: node.js mongodb docker express docker-compose