diff --git a/drohnenfuehrer/backend/.dockerignore b/drohnenfuehrer/backend/.dockerignore index 6f4eb6f..aebd3e1 100644 --- a/drohnenfuehrer/backend/.dockerignore +++ b/drohnenfuehrer/backend/.dockerignore @@ -39,3 +39,6 @@ docs/ *.swp *.swo .DS_Store + +# Laufzeit-Cache, gehoert nicht ins Image +geocode-cache.json diff --git a/drohnenfuehrer/backend/utils/geocode.js b/drohnenfuehrer/backend/utils/geocode.js index 973cfdf..d2d9afd 100644 --- a/drohnenfuehrer/backend/utils/geocode.js +++ b/drohnenfuehrer/backend/utils/geocode.js @@ -4,7 +4,12 @@ const path = require('path'); const config = require('../config/env'); const logger = require('./logger'); -const CACHE_FILE = path.join(__dirname, '..', 'geocode-cache.json'); +// Pfad konfigurierbar: im Container zeigt GEOCODE_CACHE_FILE in ein +// Verzeichnis-Volume. Ein Named Volume ist immer ein Verzeichnis und kann +// nicht auf einen Dateipfad gemountet werden — vorher lief jeder Lese- und +// Schreibversuch in EISDIR, still verschluckt vom try/catch. +const CACHE_FILE = process.env.GEOCODE_CACHE_FILE + || path.join(__dirname, '..', 'geocode-cache.json'); const CACHE_SAVE_INTERVAL = 60000; // Save every 60 seconds const CACHE_MAX_ENTRIES = 1000; diff --git a/drohnenfuehrer/docker-compose.yml b/drohnenfuehrer/docker-compose.yml index c80569c..b7f25cc 100644 --- a/drohnenfuehrer/docker-compose.yml +++ b/drohnenfuehrer/docker-compose.yml @@ -28,9 +28,10 @@ services: - default - jagd-network volumes: - - geocode-cache:/app/geocode-cache.json + - geocode-cache:/app/cache environment: - NODE_ENV=production + - GEOCODE_CACHE_FILE=/app/cache/geocode-cache.json - MONGO_URI=mongodb://drohnenfuehrer:${MONGO_PASSWORD}@mongo:27017/drohnenfuehrer?authSource=admin # :? statt stiller Leerersetzung — sonst startet das Backend mit # leerem Secret und beendet sich sofort wieder (Crash-Loop). diff --git a/nachsuche/backend/.dockerignore b/nachsuche/backend/.dockerignore index 6f4eb6f..aebd3e1 100644 --- a/nachsuche/backend/.dockerignore +++ b/nachsuche/backend/.dockerignore @@ -39,3 +39,6 @@ docs/ *.swp *.swo .DS_Store + +# Laufzeit-Cache, gehoert nicht ins Image +geocode-cache.json diff --git a/nachsuche/backend/utils/geocode.js b/nachsuche/backend/utils/geocode.js index 46d5348..4c105c0 100644 --- a/nachsuche/backend/utils/geocode.js +++ b/nachsuche/backend/utils/geocode.js @@ -4,7 +4,12 @@ const path = require('path'); const config = require('../config/env'); const logger = require('./logger'); -const CACHE_FILE = path.join(__dirname, '..', 'geocode-cache.json'); +// Pfad konfigurierbar: im Container zeigt GEOCODE_CACHE_FILE in ein +// Verzeichnis-Volume. Ein Named Volume ist immer ein Verzeichnis und kann +// nicht auf einen Dateipfad gemountet werden — vorher lief jeder Lese- und +// Schreibversuch in EISDIR, still verschluckt vom try/catch. +const CACHE_FILE = process.env.GEOCODE_CACHE_FILE + || path.join(__dirname, '..', 'geocode-cache.json'); const CACHE_SAVE_INTERVAL = 60000; // Save every 60 seconds const CACHE_MAX_ENTRIES = 1000; diff --git a/nachsuche/docker-compose.yml b/nachsuche/docker-compose.yml index 5314b72..f584254 100644 --- a/nachsuche/docker-compose.yml +++ b/nachsuche/docker-compose.yml @@ -30,9 +30,10 @@ services: - default - jagd-network volumes: - - geocode-cache:/app/geocode-cache.json + - geocode-cache:/app/cache environment: - NODE_ENV=production + - GEOCODE_CACHE_FILE=/app/cache/geocode-cache.json - MONGO_URI=mongodb://nachsuche:${MONGO_PASSWORD}@mongo:27017/nachsuche?authSource=admin # :? statt stiller Leerersetzung — sonst startet das Backend mit # leerem Secret und beendet sich sofort wieder (Crash-Loop). diff --git a/portal/docker-compose.yml b/portal/docker-compose.yml index aafbe41..b9bc9bb 100644 --- a/portal/docker-compose.yml +++ b/portal/docker-compose.yml @@ -4,7 +4,8 @@ services: container_name: jagd-portal restart: unless-stopped ports: - - "8090:80" + # Port konfigurierbar, damit der Aufbau nicht an einer Belegung scheitert + - "${PORTAL_PORT:-8090}:80" networks: - default - jagd-network diff --git a/stoeberhunde/backend/.dockerignore b/stoeberhunde/backend/.dockerignore index 6f4eb6f..aebd3e1 100644 --- a/stoeberhunde/backend/.dockerignore +++ b/stoeberhunde/backend/.dockerignore @@ -39,3 +39,6 @@ docs/ *.swp *.swo .DS_Store + +# Laufzeit-Cache, gehoert nicht ins Image +geocode-cache.json diff --git a/stoeberhunde/backend/utils/geocode.js b/stoeberhunde/backend/utils/geocode.js index 973cfdf..d2d9afd 100644 --- a/stoeberhunde/backend/utils/geocode.js +++ b/stoeberhunde/backend/utils/geocode.js @@ -4,7 +4,12 @@ const path = require('path'); const config = require('../config/env'); const logger = require('./logger'); -const CACHE_FILE = path.join(__dirname, '..', 'geocode-cache.json'); +// Pfad konfigurierbar: im Container zeigt GEOCODE_CACHE_FILE in ein +// Verzeichnis-Volume. Ein Named Volume ist immer ein Verzeichnis und kann +// nicht auf einen Dateipfad gemountet werden — vorher lief jeder Lese- und +// Schreibversuch in EISDIR, still verschluckt vom try/catch. +const CACHE_FILE = process.env.GEOCODE_CACHE_FILE + || path.join(__dirname, '..', 'geocode-cache.json'); const CACHE_SAVE_INTERVAL = 60000; // Save every 60 seconds const CACHE_MAX_ENTRIES = 1000; diff --git a/stoeberhunde/docker-compose.yml b/stoeberhunde/docker-compose.yml index f24a592..ef72832 100644 --- a/stoeberhunde/docker-compose.yml +++ b/stoeberhunde/docker-compose.yml @@ -28,9 +28,10 @@ services: - default - jagd-network volumes: - - geocode-cache:/app/geocode-cache.json + - geocode-cache:/app/cache environment: - NODE_ENV=production + - GEOCODE_CACHE_FILE=/app/cache/geocode-cache.json - MONGO_URI=mongodb://stoeberhunde:${MONGO_PASSWORD}@mongo:27017/stoeberhunde?authSource=admin # :? statt stiller Leerersetzung — sonst startet das Backend mit # leerem Secret und beendet sich sofort wieder (Crash-Loop).