I am trying to deploy nodejs app in docker swarm. However I'm struggling to make it connect to the mongodb service.
Below is my docker-compose file
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
This is the node js script
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"); });
I get the error below when I view the node service in the docker swarm.
enter image description here
Copyright Notice:Content Author:「Mosa Sello」,Reproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/67380974/cannot-connect-node-js-app-to-mongodb-running-in-a-docker-swarm