简体   繁体   English

Mongoose 连接到 docker 中的 mongo

[英]Mongoose connect to mongo in docker

I'm trying to connect to mongo in docker from nodejs running also in docker.我正在尝试从也在 docker 中运行的 nodejs 连接到 docker 中的 mongo。 Here is my configuration.这是我的配置。 What's wrong with it?它出什么问题了?

docker-compose docker-compose

  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 .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"

connect function连接 function

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,
};

Container returns Succesfully Connected!容器返回成功连接!

But when trying to add users, I receive但是在尝试添加用户时,我收到

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}

You have some weird quoting going on that most likely your application is generating.您的应用程序很可能正在生成一些奇怪的引用。 Doesn't look like this has anything to do with docker.看起来这与 docker 没有任何关系。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM