From f3fc1f58686f605248521b8096edd8a86f63753c Mon Sep 17 00:00:00 2001 From: rxf Date: Mon, 4 Aug 2025 11:27:31 +0000 Subject: [PATCH] docker-Sachen dazu --- .dockerignore | 6 ++++++ .gitignore | 2 ++ Dockerfile | 31 +++++++++++++++++++++++++++++++ docker-compose.yml | 9 +++++++++ last_date.txt | 2 +- main.py | 20 +++++++++++--------- requirements.txt | 10 ++++++++++ run_wetter.sh | 19 +++++++++++++++++++ 8 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 requirements.txt create mode 100755 run_wetter.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..99eded6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.venv/ +__pycache__/ +*.pyc +logs +.env +.DS_Store \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3c3ee32..74c387f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ .env archive wetter_heute.png +last_date.txt +logs diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..67c7902 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM python:3.10-slim + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + tesseract-ocr \ + tesseract-ocr-deu \ + cron \ + && rm -rf /var/lib/apt/lists/* + +# Set working directory +WORKDIR /app + +# Copy project files +COPY . /app + +# Install Python packages +RUN pip install --no-cache-dir -r requirements.txt + +# Set environment variables +ENV PYTHONUNBUFFERED=1 +ENV TESSDATA_PREFIX=/usr/share/tesseract-ocr/5/tessdata + +# Set up cron job +RUN echo "10 7 * * * bash /app/run_wetter.sh >> /app/logs/cron.log 2>&1" > wetter-cron \ + && crontab wetter-cron + +# Make shell script executable +RUN chmod +x /app/run_wetter.sh + +# Start cron in foreground +CMD ["cron", "-f"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a08ae30 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +services: + wettercheck: + build: . + container_name: wetterserver + env_file: + - .env + volumes: + - ./logs:/app/logs + restart: unless-stopped \ No newline at end of file diff --git a/last_date.txt b/last_date.txt index b3a9045..78725d4 100644 --- a/last_date.txt +++ b/last_date.txt @@ -1 +1 @@ -2025-08-03 \ No newline at end of file +2025-08-04 \ No newline at end of file diff --git a/main.py b/main.py index 813c5b1..2a44b61 100644 --- a/main.py +++ b/main.py @@ -7,10 +7,17 @@ Falls es das gleiche Datum ist, wird eine E-Mail an rexfue@gmail.com gesendet. *** Versiongeschichte +V 1.0.1 2025-08-04 rxf + - kleine Textverbesserunegen + - keine Archivierung + V 1.0.0 2025-08-03 rxf - erste laufende Version ''' +VERSION = "1.0.1" +VDATE = "2025-08-04" + import requests from PIL import Image @@ -19,7 +26,6 @@ from datetime import datetime import re, os, smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart -from dotenv import load_dotenv # ----------------------- @@ -37,7 +43,7 @@ SMTP_PORT = 465 SMTP_USER = os.getenv("GMX_EMAIL") SMTP_PASS = os.getenv("GMX_PASSWORD") -load_dotenv() +print(f"Wetterserver-Check\r\nVersion {VERSION} vom {VDATE}") # ----------------------- # Grafik herunterladen @@ -81,21 +87,17 @@ sendit = False if heutiges_datum == letztes_datum: print("⚠️ Keine neue Grafik – Datum gleich wie gestern.") body = f"Die Wettergrafik auf {url} wurde anscheinend nicht aktualisiert.\nErkanntes Datum: {heutiges_datum}" - subject = "⚠️ Wetterserver steht!" + subject = "⚠️ Wetterserver hängt!" sendit = True else: sendit = True print("✅ Neue Grafik erkannt.") - body = f"Die Wettergrafik auf {url} ist aktuell" - subject = "Wetterserver OK!" + body = f"Die Wettergrafik auf {url} ist aktuell: {heutiges_datum}" + subject = "✅ Wetterserver OK!" with open("last_date.txt", "w") as f: f.write(heutiges_datum) - # Grafik archivieren - archivname = f"wetter_{datetime.today().strftime('%Y-%m-%d')}.png" - os.rename("wetter_heute.png", os.path.join("archive", archivname)) - # ----------------------- # E-Mail senden # ----------------------- diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3a2cb77 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +certifi==2025.8.3 +charset-normalizer==3.4.2 +dotenv==0.9.9 +idna==3.10 +packaging==25.0 +pillow==11.3.0 +pytesseract==0.3.13 +python-dotenv==1.1.1 +requests==2.32.4 +urllib3==2.5.0 diff --git a/run_wetter.sh b/run_wetter.sh new file mode 100755 index 0000000..e4a55d9 --- /dev/null +++ b/run_wetter.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Aktiviere virtuelle Umgebung +# source /home/rxf/Projekte/wetterserver/.venv/bin/activate + +cd /app + +# Protokollfunktion mit Zeitstempel +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') $1" >> logs/log +} + +log ">>> Starte Wetterprüfung" + +# Python-Skript ausführen und Ergebnis loggen +python main.py >> logs/log 2>&1 + +log ">>> Wetterprüfung abgeschlossen" +log "------------------------------------" \ No newline at end of file