【发布时间】:2019-08-13 14:37:39
【问题描述】:
我正在尝试使用 mongoose 从在主机上运行的应用程序连接到在 docker 中运行的 mongodb,但它失败了。
我不能将端口27017 用于新的 mongodb 容器,因为它已被其他容器使用。所以我按照这里的指南使用compose进行设置。
下面是sn-ps:
docker-compose.yml
version: '3'
services:
db:
image: mongo:latest
restart: always
ports:
- '8081:8081'
environment:
MONGO_INITDB_ROOT_USERNAME: root1
MONGO_INITDB_ROOT_PASSWORD: password1
但是当我执行docker-ps 时,端口27017 仍然存在,但我不确定这是否会导致问题。
PORTS
0.0.0.0:8081->8081/tcp, 27017/tcp
然后我在admin 数据库中创建了一个新用户。
use admin
db.createUser(
{
user: "admin1",
pwd: "password2",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
server.js
const connectOption = {
useNewUrlParser: true,
user: 'admin1',
pass: 'password2',
authSource: 'admin',
}
const mongoURL = 'mongodb://localhost:8081/app1';
mongoose.connect(mongoURL, connectOption)
.then(() => console.log('MongoDB Connected'))
.catch(error => console.log(error));
我收到的错误是
{
MongoNetworkError: failed to connect to server [localhost:8081] on first connect [MongoNetworkError: write EPIPE]
...
...
...
name: 'MongoNetworkError',
errorLabels: [ 'TransientTransactionError' ],
[Symbol(mongoErrorContextSymbol)]: {}
}
【问题讨论】:
标签: mongodb docker mongoose docker-compose