5.4 KiB
Docker Deployment Anleitung
Übersicht
Es gibt zwei Docker Compose Konfigurationen:
docker-compose.local.yml- Für lokale Entwicklung (mit externem MongoDB)docker-compose.prod.yml- Für Server/Produktion (mit externem MongoDB)
Beide Konfigurationen verwenden einen externen MongoDB Server und starten keinen eigenen MongoDB Container.
Lokale Entwicklung
Voraussetzungen
- Docker und Docker Compose installiert
- Zugriff auf MongoDB Server (lokal oder remote)
Konfiguration
Die lokale Entwicklung verwendet einen externen MongoDB Server. Konfiguriere die Verbindung:
Option 1: .env.local Datei verwenden (empfohlen)
cp .env.local .env.local.custom
nano .env.local.custom # Anpassen
docker compose -f docker-compose.local.yml --env-file .env.local.custom up
Option 2: Direkt in docker-compose.local.yml anpassen Ändere die Environment-Variablen im File entsprechend deinem Setup.
MongoDB auf Host-Maschine:
- MONGOHOST=host.docker.internal # für Mac/Windows
- MONGOHOST=172.17.0.1 # für Linux
MongoDB auf anderem Server:
- MONGOHOST=mongodb-dev.example.com
- MONGOPORT=27017
- MONGOAUTH=true
- MONGOUSRP=user:password
Verwendung
# Starten (baut beim ersten Mal automatisch das Image)
docker compose -f docker-compose.local.yml up
# Mit .env.local
docker compose -f docker-compose.local.yml --env-file .env.local up
# Im Hintergrund starten
docker compose -f docker-compose.local.yml up -d
# Logs anzeigen
docker compose -f docker-compose.local.yml logs -f
# Stoppen
docker compose -f docker-compose.local.yml down
Zugriff
- Anwendung: http://localhost:3005/fs/
Hinweis: network_mode host
Wenn MongoDB auf localhost der Host-Maschine läuft, kannst du in docker-compose.local.yml auskommentieren:
network_mode: host
Dann ist die App direkt auf dem Host-Netzwerk und kann localhost:27017 erreichen.
Server/Produktion
Voraussetzungen
- Docker und Docker Compose installiert
- Zugriff auf externen MongoDB Server
- Image auf docker.citysensor.de Registry
Erste Einrichtung
-
Environment-Datei erstellen:
cp .env.example .env nano .env # oder ein anderer Editor -
Werte in .env anpassen:
MONGOHOST=ihre-mongodb-server.example.com MONGOPORT=27017 MONGOBASE=allsensors MONGOAUTH=true MONGOUSRP=admin:securepassword -
Zur Registry einloggen:
docker login docker.citysensor.de -
Image pullen:
docker compose -f docker-compose.prod.yml pull
Deployment
# Starten
docker compose -f docker-compose.prod.yml up -d
# Status prüfen
docker compose -f docker-compose.prod.yml ps
# Logs anzeigen
docker compose -f docker-compose.prod.yml logs -f geiger-web
# Neustarten
docker compose -f docker-compose.prod.yml restart
# Stoppen
docker compose -f docker-compose.prod.yml down
Update auf neue Version
# Neues Image pullen
docker compose -f docker-compose.prod.yml pull
# Container neu starten mit neuem Image
docker compose -f docker-compose.prod.yml up -d
# Alte Images aufräumen
docker image prune -f
Monitoring
# Live Logs
docker compose -f docker-compose.prod.yml logs -f
# Ressourcen-Nutzung
docker stats geiger_web_prod
# Health Check Status
docker inspect --format='{{.State.Health.Status}}' geiger_web_prod
Build & Push (für Entwickler)
Das deploy.sh Script übernimmt Build und Push automatisch:
# Mit automatischem Datums-Tag
./deploy.sh
# Mit spezifischem Tag
TAG=v2.9.6 ./deploy.sh
Oder manuell:
# Image bauen
docker build -t docker.citysensor.de/geiger_web_26:latest .
# Image zu Registry pushen
docker push docker.citysensor.de/geiger_web_26:latest
Troubleshooting
Container startet nicht
# Detaillierte Logs
docker compose -f docker-compose.prod.yml logs geiger-web
# Container Shell betreten
docker exec -it geiger_web_prod sh
MongoDB Verbindungsprobleme
- Prüfe MONGOHOST und MONGOPORT in .env oder .env.local
- Prüfe Netzwerk-Konnektivität:
docker exec -it geiger_web_prod ping mongodb - Prüfe MongoDB Credentials
- Lokal: Wenn MongoDB auf localhost läuft, verwende
MONGOHOST=host.docker.internal(Mac/Windows) oderMONGOHOST=172.17.0.1(Linux) - Lokal: Alternativ aktiviere
network_mode: hostin docker-compose.local.yml
Port bereits belegt
Ändere EXTERNAL_PORT in .env auf einen anderen Port:
EXTERNAL_PORT=3006
Logs zu groß
Die Produktionskonfiguration limitiert Logs auf 3 × 10MB. Bei Bedarf anpassen in docker-compose.prod.yml:
logging:
options:
max-size: "10m"
max-file: "3"
Sicherheitshinweise
-
.env Datei NIEMALS ins Git committen!
- Ist bereits in .gitignore
- Enthält sensible Zugangsdaten
-
Starke Passwörter verwenden
- Besonders für Produktions-MongoDB
-
Firewall konfigurieren
- Nur notwendige Ports öffnen
- MongoDB Port (27017) nicht öffentlich zugänglich machen
-
Regelmäßige Updates
- Base Image (node:alpine) aktuell halten
- Dependencies in package.json aktualisieren
Systemanforderungen
Lokal
- Minimum: 2 GB RAM, 2 CPU Cores
- Docker >= 20.10
- Docker Compose >= 2.0 (oder Docker mit integriertem compose plugin)
Server
- Empfohlen: 2 GB RAM, 2 CPU Cores
- Anpassbar in docker-compose.prod.yml unter
deploy.resources