Files
geiger2/DOCKER.md
rxf cb5062c0de V 3.0.0
Jetzt läufts erst mal auf citysensor.de (strato) mit der MongoDB auf IONOS
2026-03-28 15:20:51 +01:00

5.4 KiB
Raw Blame History

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

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

  1. Environment-Datei erstellen:

    cp .env.example .env
    nano .env  # oder ein anderer Editor
    
  2. Werte in .env anpassen:

    MONGOHOST=ihre-mongodb-server.example.com
    MONGOPORT=27017
    MONGOBASE=allsensors
    MONGOAUTH=true
    MONGOUSRP=admin:securepassword
    
  3. Zur Registry einloggen:

    docker login docker.citysensor.de
    
  4. 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) oder MONGOHOST=172.17.0.1 (Linux)
  • Lokal: Alternativ aktiviere network_mode: host in 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

  1. .env Datei NIEMALS ins Git committen!

    • Ist bereits in .gitignore
    • Enthält sensible Zugangsdaten
  2. Starke Passwörter verwenden

    • Besonders für Produktions-MongoDB
  3. Firewall konfigurieren

    • Nur notwendige Ports öffnen
    • MongoDB Port (27017) nicht öffentlich zugänglich machen
  4. 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