node.js - 无法将节点 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 中查看节点服务时,出现以下错误。 在此处输入图像描述
解决方案
'mongodb://db:27017/moiponeGateKeeper' 不是有效的 url,您应该指定一个有效的链接来连接。而不是db
尝试使用您的 mongodb 服务器的有效 ip。
推荐阅读
- php - Reading multiple rows from a csv in php
- ssh - 写入分区或更改 /etc/fstab 后无法 SSH 到 GCE 实例
- javascript - 我的 ajax 函数不知怎的被伊斯坦布尔所覆盖
- authentication - Git 扩展验证错误
- excel - 数据验证指的是表中的列较少的单元格
- android - 如何在 Android 应用启动器上显示通知点(奥利奥)?
- eclipse-plugin - 如何在 Eclipse 的问题视图中添加附加列?
- javascript - 我的 Node JS 控制台正在显示我想要的文本,为什么我不能将它保存为字符串?
- javascript - 如何删除“访问控制允许标头”?
- vba - 如果excel中的另一个单元格不为空,如何将公式输入到空单元格中