首页 > 解决方案 > 无法将节点 js 应用程序连接到在 docker swarm 中运行的 mongodb

问题描述

我正在尝试在 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 中查看节点服务时,出现以下错误。 在此处输入图像描述

标签: node.jsmongodbdockerdocker-swarm

解决方案


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


推荐阅读