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

236 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)**
```bash
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:**
```yaml
- MONGOHOST=host.docker.internal # für Mac/Windows
- MONGOHOST=172.17.0.1 # für Linux
```
**MongoDB auf anderem Server:**
```yaml
- MONGOHOST=mongodb-dev.example.com
- MONGOPORT=27017
- MONGOAUTH=true
- MONGOUSRP=user:password
```
### Verwendung
```bash
# 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:
```yaml
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:**
```bash
cp .env.example .env
nano .env # oder ein anderer Editor
```
2. **Werte in .env anpassen:**
```env
MONGOHOST=ihre-mongodb-server.example.com
MONGOPORT=27017
MONGOBASE=allsensors
MONGOAUTH=true
MONGOUSRP=admin:securepassword
```
3. **Zur Registry einloggen:**
```bash
docker login docker.citysensor.de
```
4. **Image pullen:**
```bash
docker compose -f docker-compose.prod.yml pull
```
### Deployment
```bash
# 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
```bash
# 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
```bash
# 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:
```bash
# Mit automatischem Datums-Tag
./deploy.sh
# Mit spezifischem Tag
TAG=v2.9.6 ./deploy.sh
```
Oder manuell:
```bash
# 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
```bash
# 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:
```env
EXTERNAL_PORT=3006
```
### Logs zu groß
Die Produktionskonfiguration limitiert Logs auf 3 × 10MB. Bei Bedarf anpassen in docker-compose.prod.yml:
```yaml
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`