Docker draus gemacht
This commit is contained in:
9
.env.example
Normal file
9
.env.example
Normal 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
61
DOCKER_README.md
Normal 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
20
Dockerfile
Normal 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
19
docker-compose.yml
Normal 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
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
flask==3.0.0
|
flask==3.0.0
|
||||||
paho-mqtt==1.6.1
|
paho-mqtt==1.6.1
|
||||||
|
python-dotenv==1.0.0
|
||||||
@@ -6,18 +6,23 @@ Wetterstation - MQTT Datenempfang und Web-Visualisierung
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import json
|
import json
|
||||||
import threading
|
import threading
|
||||||
|
import os
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from flask import Flask, render_template, jsonify
|
from flask import Flask, render_template, jsonify
|
||||||
import paho.mqtt.client as mqtt
|
import paho.mqtt.client as mqtt
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
# Konfiguration
|
# Lade Umgebungsvariablen aus .env Datei
|
||||||
MQTT_HOST = "rexfue.de"
|
load_dotenv()
|
||||||
MQTT_PORT = 1883
|
|
||||||
MQTT_TOPIC = "vantage/live" # Bitte anpassen!
|
|
||||||
MQTT_USER = "stzuhr" # Bitte anpassen!
|
|
||||||
MQTT_PASSWORD = "74chQCYb" # Bitte anpassen!
|
|
||||||
|
|
||||||
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__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user