【问题标题】:Cannot connect node js app to mongodb running in a docker swarm无法将节点 js 应用程序连接到在 docker swarm 中运行的 mongodb
【发布时间】:2023-03-15 16:48:01
【问题描述】:

我正在尝试在 docker swarm 中部署 nodejs 应用程序。但是我正在努力让它连接到 mongodb 服务。 下面是我的 docker-compose 文件

version: '3'
services:
  moitrack-teltonika-parser:
    build: .
    image: moitrack/moitrack-teltonika-parser:1.0.14
    ports:
      - "5001:5001"
    networks:
      - web
    deploy:
      mode: replicated
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s
    depends_on: 
      - db
  db:
    image: mongo
    command: mongod --bind_ip_all
    ports:
    - "27017"
    volumes:
    - mongodata:/data/db
    restart: "always"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
    - web
volumes:
  mongodata: {}
      
networks:
  web:
    external: true

这是节点js脚本

var express = require("express");
const mongoose = require('mongoose');
var server = express();

const options = {
    useNewUrlParser: true,
    reconnectTries: Number.MAX_VALUE,
    reconnectInterval: 500,
    connectTimeoutMS: 10000,
  };

const DB_URI = 'mongodb://db:27017/moiponeGateKeeper';

mongoose.connect(DB_URI, options).then(() => {
    console.log("database connected");

}).catch(err => console.log(err));

server.listen(5001, () => { console.log("Server started"); });

当我在 docker swarm 中查看节点服务时,出现以下错误。 enter image description here

【问题讨论】:

  • 尝试输入IP地址而不是本地地址也许可以!
  • 请在此处粘贴错误日志,而不是使用图像

标签: node.js mongodb docker docker-swarm


【解决方案1】:

'mongodb://db:27017/moiponeGateKeeper' 不是有效的 url, 您应该指定一个有效的链接来连接。而不是db 尝试使用您的mongodb服务器的有效IP。

【讨论】:

  • 谢谢,这行得通,但它暴露了我的群体,我必须增加一些安全性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多