Added docker compose file

This commit is contained in:
Arnaud Nelissen
2025-10-08 12:53:21 +02:00
parent 539b6f262e
commit a4b4ffe9ff
3 changed files with 63 additions and 25 deletions

7
Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
# LSP Dockerfile
FROM node
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
CMD ["node", "app.js"]

View File

@@ -4,7 +4,18 @@ const models = require('../models')
const mongodb_hostname = process.env.MONGODB_HOST || '0.0.0.0'; const mongodb_hostname = process.env.MONGODB_HOST || '0.0.0.0';
const mongodb_port = process.env.MONGODB_PORT || 27017; const mongodb_port = process.env.MONGODB_PORT || 27017;
const mongodb_database = process.env.MONGODB_DATABASE || 'lsp'; const mongodb_database = process.env.MONGODB_DATABASE || 'lsp';
const mongodb_url = 'mongodb://' + mongodb_hostname + ':' + mongodb_port; const mongodb_user = process.env.MONGODB_USER;
const mongodb_pass = process.env.MONGODB_PASSWORD;
// Build the MongoDB URI based on whether authentication is provided
let mongodb_url;
if (mongodb_user && mongodb_pass) {
// Authenticated connection
mongodb_url = `mongodb://${mongodb_user}:${mongodb_pass}@${mongodb_hostname}:${mongodb_port}`;
} else {
// No authentication
mongodb_url = `mongodb://${mongodb_hostname}:${mongodb_port}`;
}
const client = new MongoClient(mongodb_url, { useUnifiedTopology: true }); const client = new MongoClient(mongodb_url, { useUnifiedTopology: true });
@@ -21,13 +32,8 @@ var days = function(date) {
} }
var init = async function () { var init = async function () {
await client.connect(function (err) { try {
if (err) { await client.connect();
console.log('MongoDB Client error');
console.log(err);
return { error: "Error connecting to DB: " + err }
} else {
_db = client.db(mongodb_database); _db = client.db(mongodb_database);
_devices = _db.collection('devices'); _devices = _db.collection('devices');
_data = _db.collection('data'); _data = _db.collection('data');
@@ -35,19 +41,16 @@ var init = async function () {
_events = _db.collection('events'); _events = _db.collection('events');
_alerts = _db.collection('alerts'); _alerts = _db.collection('alerts');
console.log('MongoDB Client connected'); if (mongodb_user && mongodb_pass) {
//////////////////////////// console.log('MongoDB Client connected with authentication');
// FLUSH DB BY UNCOMMENTING } else {
// _devices.deleteMany(function(err, objects){}); console.log('MongoDB Client connected without authentication');
// _data.deleteMany(function(err, objects){});
// _ipx_data.deleteMany(function(err, objects){});
// _events.deleteMany(function(err, objects){});
// _alerts.deleteMany(function(err, objects){});
return null;
} }
}); } catch (err) {
} console.error('MongoDB Client error:', err);
return { error: "Error connecting to DB: " + err };
}
};
var addData = async function (relay, device, element) { var addData = async function (relay, device, element) {
try { try {

28
docker-compose.yaml Normal file
View File

@@ -0,0 +1,28 @@
version: '3' # docker-compose version
services: # services which our app going to use. (list of containers we want to create)
mongodb: # container name
image: mongo # which image container will build on
ports:
- "27017:27017"
networks: # adding network
- lsp-network
volumes:
- mongo-data:/data/db
lsp:
build: . # build the Docker image for the service using the Dockerfile located in the current directory
ports:
- "4443:443"
- "8080:80"
networks: # adding network
- lsp-network
depends_on:
- mongodb
networks: # allow services to talk to each other while providing isolation from other docker container, running on the same host
lsp-network:
driver: bridge
volumes: # enable persistence of database data across container restart
mongo-data:
driver: local