我正在尝试从也在docker中运行的nodejs连接到docker中的mongo。这是我的配置。它出什么问题了?
docker 组成
version: '3'
networks:
velocity:
services:
mongo-main-gate:
image: mongo
volumes:
- ./mongo:/data/db
networks:
- velocity
main-gate:
build: .
environment:
- PORT=${PORT}
- PROD=${PROD}
- HOST=${HOST}
- MONGO_URI=${MONGO_URI}
- RPC_NODE_URL=${RPC_NODE_URL}
ports:
- ${EXT_PORT}:${PORT}
depends_on:
- mongo-main-gate
networks:
- velocity
.env
PORT=3000
PROD="true"
HOST=0.0.0.0
MONGO_URI="mongodb://mongo-main-gate:27017/maingate"
EXT_PORT=8080
RPC_NODE_URL="https://node.funcoin.io"
连接功能
const mongoose = require('mongoose');
const callback = (err) => {
if (err) {
console.log(err.message);
} else {
console.log('Succesfully Connected!');
}
};
const init = () => {
mongoose.Promise = global.Promise;
console.info('INIT', process.env.MONGO_URI)
mongoose.connect(
process.env.MONGO_URI || 'mongodb://localhost:27017/maingate',
{ useCreateIndex: true, useNewUrlParser: true },
callback
);
};
module.exports = {
init,
callback,
};
容器返回成功连接!
但是当尝试添加用户时,我收到
main-gate_1 | {"level":50,"time":1587804410796,"pid":1,"hostname":"a1aad352ee4f","reqId":"cc655a95-45fb-4328-9e27-99283a393852","req":{"method":"GET","url":"/generate/mocks","hostname":"0.0.0.0:8080","remoteAddress":"172.24.0.1","remotePort":43686},"res":{"statusCode":500},"err":{"type":"MongoError","message":"Invalid namespace specified 'maingate\".users'","stack":"MongoError: Invalid namespace specified 'maingate\".users'\n at Connection.<anonymous> (/usr/src/app/node_modules/mongodb/lib/core/connection/pool.js:450:61)\n at Connection.emit (events.js:198:13)\n at processMessage (/usr/src/app/node_modules/mongodb/lib/core/connection/connection.js:384:10)\n at Socket.<anonymous> (/usr/src/app/node_modules/mongodb/lib/core/connection/connection.js:553:15)\n at Socket.emit (events.js:198:13)\n at addChunk (_stream_readable.js:288:12)\n at readableAddChunk (_stream_readable.js:269:11)\n at Socket.Readable.push (_stream_readable.js:224:10)\n at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)","ok":0,"errmsg":"Invalid namespace specified 'maingate\".users'","code":73,"codeName":"InvalidNamespace","name":"MongoError"},"msg":"Invalid namespace specified 'maingate\".users'","v":1}
最佳答案
您可能会奇怪地引用了您的应用程序正在生成的信息。看起来与docker没有关系。
关于node.js - Mongoose 在docker中连接到mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61423183/