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
|
||||
paho-mqtt==1.6.1
|
||||
python-dotenv==1.0.0
|
||||
@@ -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__)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user