From 33b731c59f92f87d611143288ee4d17f3d53423c Mon Sep 17 00:00:00 2001 From: rxf Date: Tue, 5 Aug 2025 15:38:12 +0000 Subject: [PATCH] V 1.1.0 Aufruf via System-Cron --- .gitignore | 3 +- Dockerfile | 36 ++++++++---------------- Read.me | 2 ++ main.py => app/main.py | 10 +++++-- requirements.txt => app/requirements.txt | 0 docker-compose.yml | 9 ------ run_wetter.sh | 34 ++++++++++++++-------- 7 files changed, 44 insertions(+), 50 deletions(-) create mode 100644 Read.me rename main.py => app/main.py (93%) rename requirements.txt => app/requirements.txt (100%) delete mode 100644 docker-compose.yml diff --git a/.gitignore b/.gitignore index 74c387f..6d92b7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ .venv .env -archive wetter_heute.png last_date.txt -logs +log diff --git a/Dockerfile b/Dockerfile index e512ef1..0f03953 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,20 @@ -FROM python:3.10-slim +FROM python:3.11-slim -# Install system dependencies +# Installiere Tesseract + Abhängigkeiten RUN apt-get update && apt-get install -y \ tesseract-ocr \ tesseract-ocr-deu \ - cron \ - nano \ - && rm -rf /var/lib/apt/lists/* - -# Set working directory + libglib2.0-0 \ + libsm6 \ + libxrender1 \ + libxext6 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /app +COPY app/ /app +COPY app/requirements.txt ./ -# 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 +CMD ["python3", "main.py"] \ No newline at end of file diff --git a/Read.me b/Read.me new file mode 100644 index 0000000..0135e0a --- /dev/null +++ b/Read.me @@ -0,0 +1,2 @@ +Dieser Docker-Container wird NICHT mit Portainer verwaltet +sondern direkt über das Script run_wetterserver.sh via cron aufgerufen diff --git a/main.py b/app/main.py similarity index 93% rename from main.py rename to app/main.py index 607dcea..b1dfef1 100644 --- a/main.py +++ b/app/main.py @@ -7,6 +7,11 @@ Falls es das gleiche Datum ist, wird eine E-Mail an rexfue@gmail.com gesendet. *** Versiongeschichte +V 1.1.0 2025-08-05 rxf + - wird nun nicht mehr im Portainer verwaltet sondern + mit den script run_wetterserver.sh direct vom System-Cron + aufgerufen + V 1.0.1 2025-08-04 rxf - kleine Textverbesserunegen - keine Archivierung @@ -15,8 +20,8 @@ V 1.0.0 2025-08-03 rxf - erste laufende Version ''' -VERSION = "1.0.1" -VDATE = "2025-08-04" +VERSION = "1.1.0" +VDATE = "2025-08-05" import requests @@ -44,7 +49,6 @@ SMTP_USER = os.getenv("GMX_EMAIL") SMTP_PASS = os.getenv("GMX_PASSWORD") print(f"Wetterserver-Check\r\nVersion {VERSION} vom {VDATE}") -print(f"U: {SMTP_USER}, P: {SMTP_PASS}") # ----------------------- # Grafik herunterladen diff --git a/requirements.txt b/app/requirements.txt similarity index 100% rename from requirements.txt rename to app/requirements.txt diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index a08ae30..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -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/run_wetter.sh b/run_wetter.sh index f635764..8fb2048 100755 --- a/run_wetter.sh +++ b/run_wetter.sh @@ -1,19 +1,29 @@ #!/bin/bash -# Aktiviere virtuelle Umgebung -# source /home/rxf/Projekte/wetterserver/.venv/bin/activate +# set -x +# Konfiguration +PROJECT_DIR="/home/rxf/Projekte/wetterserver" # ← bitte anpassen +ENV_FILE="$PROJECT_DIR/.env" +LOG_FILE="$PROJECT_DIR/log/wetterserver.log" +IMAGE_NAME="wetterserver" -cd /app +# Zeitstempel für Logging +TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') -# Protokollfunktion mit Zeitstempel -log() { - echo "$(date '+%Y-%m-%d %H:%M:%S') $1" >> logs/cron.log -} +echo "[$TIMESTAMP] 🔁 Starte Wetterserver-Check..." | tee -a "$LOG_FILE" -log ">>> Starte Wetterprüfung" +# Container starten +docker run --rm \ + --env-file "$ENV_FILE" \ + -v "$PROJECT_DIR/app:/app" \ + "$IMAGE_NAME" >> "$LOG_FILE" 2>&1 -# Python-Skript ausführen und Ergebnis loggen -/usr/local/bin/python main.py >> logs/cron.log 2>&1 +EXIT_CODE=$? -log ">>> Wetterprüfung abgeschlossen" -log "------------------------------------" \ No newline at end of file +if [ $EXIT_CODE -eq 0 ]; then + echo "[$TIMESTAMP] ✅ Wetterserver-Check erfolgreich ausgeführt." | tee -a "$LOG_FILE" +else + echo "[$TIMESTAMP] ❌ Fehler beim Ausführen des Containers (Exit-Code: $EXIT_CODE)" | tee -a "$LOG_FILE" +fi + +echo "-----------------------------------------------------" >> "$LOG_FILE"