Docker draus gemacht

This commit is contained in:
rxf
2026-01-25 19:48:00 +01:00
parent 5f516f5dd4
commit cff7f80463
6 changed files with 122 additions and 7 deletions

9
.env.example Normal file
View File

@@ -0,0 +1,9 @@
# MQTT Broker Konfiguration
MQTT_HOST=rexfue.de
MQTT_PORT=1883
MQTT_TOPIC=vantage/live
MQTT_USER=your_mqtt_username
MQTT_PASSWORD=your_mqtt_password
# Datenbank
DB_FILE=wetterdaten.db

61
DOCKER_README.md Normal file
View File

@@ -0,0 +1,61 @@
# Wetterstation Docker Setup
## Voraussetzungen
- Docker und Docker Compose installiert
- MQTT Broker Zugang (Host, Port, Benutzername, Passwort)
## Installation
### 1. `.env` Datei erstellen
Kopiere `.env.example` zu `.env` und fülle deine Daten ein:
```bash
cp .env.example .env
```
Bearbeite `.env` mit deinen MQTT-Credentials:
```
MQTT_HOST=dein_broker.com
MQTT_PORT=1883
MQTT_TOPIC=vantage/live
MQTT_USER=dein_benutzer
MQTT_PASSWORD=dein_passwort
DB_FILE=wetterdaten.db
```
### 2. Container starten
```bash
docker-compose up -d
```
Die Anwendung läuft dann unter `http://localhost:5003`
### 3. Container verwalten
```bash
# Logs anschauen
docker-compose logs -f
# Container stoppen
docker-compose down
# Container neustarten
docker-compose restart
```
## Datenverwaltung
Die SQLite-Datenbank (`wetterdaten.db`) wird als Volume persistiert und bleibt erhalten, auch wenn der Container gelöscht wird.
## Troubleshooting
### Datenbank-Fehler
Falls die Datenbank beschädigt ist, kannst du sie löschen und neu erstellen:
```bash
rm wetterdaten.db
docker-compose restart
```
### MQTT-Verbindungsfehler
Überprüfe deine `.env` Datei auf korrekte Credentials:
```bash
docker-compose logs wetterstation | grep -i mqtt
```

20
Dockerfile Normal file
View File

@@ -0,0 +1,20 @@
# Multi-stage build: Leichtgewichtiger Container
FROM python:3.13-slim
# Setze Arbeitsverzeichnis
WORKDIR /app
# Installiere Dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Kopiere die Anwendung
COPY wetterstation.py .
COPY static/ static/
COPY templates/ templates/
# Exponiere Port
EXPOSE 5003
# Starten Sie die Anwendung
CMD ["python", "wetterstation.py"]

19
docker-compose.yml Normal file
View File

@@ -0,0 +1,19 @@
services:
wetterstation:
build: .
container_name: wetterstation
ports:
- "5003:5003"
volumes:
- ./wetterdaten.db:/app/wetterdaten.db
env_file:
- .env
environment:
- FLASK_ENV=production
restart: unless-stopped
networks:
- wetterstation_network
networks:
wetterstation_network:
driver: bridge

View File

@@ -1,2 +1,3 @@
flask==3.0.0
paho-mqtt==1.6.1
python-dotenv==1.0.0

View File

@@ -6,18 +6,23 @@ Wetterstation - MQTT Datenempfang und Web-Visualisierung
import sqlite3
import json
import threading
import os
from datetime import datetime, timedelta
from flask import Flask, render_template, jsonify
import paho.mqtt.client as mqtt
from dotenv import load_dotenv
# Konfiguration
MQTT_HOST = "rexfue.de"
MQTT_PORT = 1883
MQTT_TOPIC = "vantage/live" # Bitte anpassen!
MQTT_USER = "stzuhr" # Bitte anpassen!
MQTT_PASSWORD = "74chQCYb" # Bitte anpassen!
# Lade Umgebungsvariablen aus .env Datei
load_dotenv()
DB_FILE = "wetterdaten.db"
# Konfiguration aus Umgebungsvariablen
MQTT_HOST = os.getenv("MQTT_HOST", "rexfue.de")
MQTT_PORT = int(os.getenv("MQTT_PORT", 1883))
MQTT_TOPIC = os.getenv("MQTT_TOPIC", "vantage/live")
MQTT_USER = os.getenv("MQTT_USER", "")
MQTT_PASSWORD = os.getenv("MQTT_PASSWORD", "")
DB_FILE = os.getenv("DB_FILE", "wetterdaten.db")
app = Flask(__name__)