2.8 KiB
2.8 KiB
Wetterstation Docker Setup
Architektur
Die Wetterstation besteht aus zwei unabhängigen Services:
- Ingestion Service (Port 5004): Empfängt POST-Daten und schreibt in die Datenbank
- Web Service (Port 5003): Stellt das Web-Interface und Lese-APIs bereit
Beide Services teilen sich eine gemeinsame SQLite-Datenbank via Volume.
Voraussetzungen
- Docker und Docker Compose installiert
Installation
1. .env Datei erstellen (optional)
Erstelle eine .env Datei für benutzerdefinierte Konfiguration:
DB_FILE=wetterdaten.db
HTTP_PORT=5003
INGESTION_PORT=5004
2. Container starten
docker-compose up -d
Die Services laufen dann unter:
- Web-Interface:
http://localhost:5003 - Ingestion API:
http://localhost:5004/api/data/upload
3. Container verwalten
# Logs anschauen (beide Services)
docker-compose logs -f
# Logs nur Ingestion Service
docker-compose logs -f wetterstation-ingestion
# Logs nur Web Service
docker-compose logs -f wetterstation-web
# Container stoppen
docker-compose down
# Container neustarten
docker-compose restart
# Nur Ingestion Service neustarten
docker-compose restart wetterstation-ingestion
Datenverwaltung
Die SQLite-Datenbank (wetterdaten.db) wird als Volume persistiert und bleibt erhalten, auch wenn die Container gelöscht werden.
Services im Detail
Ingestion Service
- Port: 5004
- Endpoints:
POST /api/data/upload- Empfängt WetterdatenGET /health- Health-Check
- Zweck: Schreibt Daten in die Datenbank
Web Service
- Port: 5003
- Endpoints:
GET /- Web-InterfaceGET /api/data/day- Daten der letzten 24hGET /api/data/week- Daten der letzten WocheGET /health- Health-Check
- Zweck: Visualisierung und Datenabruf
Externe Zugriffe
Daten senden (von außen)
curl -X POST http://your-server-ip:5004/api/data/upload \
-H 'Content-Type: application/json' \
-d '{
"dateTime": "2026-01-27 12:00:00",
"barometer": 1013.2,
"outTemp": 5.6,
"outHumidity": 72,
"windSpeed": 3.2,
"windDir": 180,
"windGust": 5.0,
"rainRate": 0.0,
"rain": 0.0
}'
Web-Interface aufrufen
Öffne im Browser: http://your-server-ip:5003
Troubleshooting
Datenbank-Fehler
Falls die Datenbank beschädigt ist:
rm wetterdaten.db
docker-compose restart wetterstation-ingestion
Container neu bauen
Nach Code-Änderungen:
docker-compose build --no-cache
docker-compose up -d
Port-Konflikte
Falls Ports bereits belegt sind, passe die Ports in docker-compose.yml an:
ports:
- "NEUER_PORT:5003" # für Web Service
- "NEUER_PORT:5004" # für Ingestion Service
Health-Checks
Überprüfe, ob Services laufen:
curl http://localhost:5003/health
curl http://localhost:5004/health