Skip to content

csaeum/DockerStackOfelia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Docker Ofelia Stack

GitHub Release License

🇬🇧 English | 🇫🇷 Français

Ein produktionsbereiter Docker Stack für Ofelia - einen modernen Cron-Job-Scheduler für Docker-Container mit integrierter Logrotate-Funktionalität.

Was ist Ofelia?

Ofelia ist ein Docker-Job-Scheduler, der es ermöglicht, Cron-Jobs direkt in Docker-Containern auszuführen. Statt in jedem Container einen eigenen Cron-Daemon laufen zu lassen, verwaltet Ofelia zentral alle zeitgesteuerten Aufgaben über Docker-Labels.

Features

  • Zentrale Verwaltung aller Cron-Jobs fĂĽr Docker-Container
  • Automatische Logrotation mit konfiguriertem Zeitplan
  • Sichere Konfiguration (Docker Socket read-only)
  • Timezone-UnterstĂĽtzung (Europe/Berlin)
  • Job-Logging in separatem Verzeichnis
  • Produktionsbereit mit Restart-Policy

Voraussetzungen

  • Docker Engine 20.10+
  • Docker Compose 2.0+
  • Zugriff auf /var/run/docker.sock

Installation

  1. Repository klonen:
git clone https://github.com/csaeum/DockerStackOfelia.git
cd DockerStackOfelia
  1. Umgebungsvariablen anpassen (optional):
cp .env.example .env
nano .env
  1. Stack starten:
docker-compose up -d

Konfiguration

Umgebungsvariablen (.env)

COMPOSE_PROJECT_NAME=ofelia      # Präfix für Container-Namen
TIMEZONE=Europe/Berlin            # Timezone fĂĽr Cron-Jobs

Cron-Jobs in anderen Containern definieren

FĂĽgen Sie Labels zu Ihren Docker-Containern hinzu, um Cron-Jobs zu definieren:

services:
  myapp:
    image: myapp:latest
    labels:
      ofelia.enabled: "true"
      ofelia.job-exec.backup.schedule: "0 2 * * *"
      ofelia.job-exec.backup.command: "/app/backup.sh"

Job-Typen

  • job-exec: Befehl in laufendem Container ausfĂĽhren
  • job-run: Befehl in neuem Container (wird danach gelöscht)
  • job-local: Befehl auf dem Host ausfĂĽhren

Schedule-Format

  • Cron-Format: 0 2 * * * (täglich um 2 Uhr)
  • Go-Format: @every 5m (alle 5 Minuten)
  • Shortcuts: @hourly, @daily, @weekly, @monthly

Logrotate-Konfiguration

Die Logrotate-Konfiguration befindet sich in config/logrotate.conf:

/ofelia/logs/*.log {
    daily
    rotate 2
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
}

Anpassungen:

  • rotate 2: Anzahl der aufzubewahrenden Log-Dateien
  • daily: Rotationsintervall (daily, weekly, monthly)
  • compress: Logs nach Rotation komprimieren

Nutzung

Stack-Befehle

# Stack starten
docker-compose up -d

# Logs anzeigen
docker-compose logs -f ofelia

# Stack stoppen
docker-compose down

# Stack neu starten
docker-compose restart

Job-Status prĂĽfen

# Ofelia-Logs anzeigen
docker logs ofelia

# Job-Logs im logs-Verzeichnis
tail -f logs/*.log

Manuelle Logrotation

docker exec ofelia-logrotate logrotate /etc/logrotate.conf

Verzeichnisstruktur

.
├── config/
│   └── logrotate.conf          # Logrotate-Konfiguration
├── logs/                        # Job-Logs (automatisch erstellt)
├── .env                         # Umgebungsvariablen
├── docker-compose.yaml          # Docker Compose Konfiguration
├── Dockerfile                   # Logrotate-Container Image
└── README.md                    # Diese Datei

Sicherheit

  • Docker Socket ist read-only gemountet (:ro)
  • Keine Root-Rechte erforderlich
  • Logs werden in separatem Volume gespeichert
  • Keine sensiblen Daten in den Container-Images

Troubleshooting

Jobs werden nicht ausgefĂĽhrt

  1. Container läuft?
docker ps | grep ofelia
  1. Labels korrekt gesetzt?
docker inspect <container-name> | grep ofelia
  1. Ofelia-Logs prĂĽfen:
docker logs ofelia

Logrotation funktioniert nicht

  1. Logrotate-Container läuft?
docker ps | grep logrotate
  1. Manuell testen:
docker exec ofelia-logrotate logrotate -d /etc/logrotate.conf

Beispiele

Tägliches Backup

services:
  database:
    image: postgres:15
    labels:
      ofelia.enabled: "true"
      ofelia.job-exec.db-backup.schedule: "0 3 * * *"
      ofelia.job-exec.db-backup.command: "pg_dump -U postgres mydb > /backup/dump.sql"

Log-Bereinigung alle 6 Stunden

services:
  webapp:
    image: nginx:alpine
    labels:
      ofelia.enabled: "true"
      ofelia.job-exec.cleanup.schedule: "@every 6h"
      ofelia.job-exec.cleanup.command: "find /var/log -name '*.log' -mtime +7 -delete"

Lizenz & UnterstĂĽtzung

Dieses Projekt ist Open Source (GPL-3.0-or-later) und kostenlos. Wenn es dir geholfen hat, freue ich mich ĂĽber deine UnterstĂĽtzung:

Buy Me a Coffee GitHub Sponsors PayPal

Made with ❤️ by WSC - Web SEO Consulting

Credits

  • Ofelia by mcuadros
  • Alpine Linux fĂĽr minimale Container-Images

Beitragen

Pull Requests sind willkommen! Für größere Änderungen öffne bitte zuerst ein Issue.

Links

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •