🇬🇧 English | 🇫🇷 Français
Ein produktionsbereiter Docker Stack für Ofelia - einen modernen Cron-Job-Scheduler für Docker-Container mit integrierter Logrotate-Funktionalität.
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.
- 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
- Docker Engine 20.10+
- Docker Compose 2.0+
- Zugriff auf
/var/run/docker.sock
- Repository klonen:
git clone https://github.com/csaeum/DockerStackOfelia.git
cd DockerStackOfelia- Umgebungsvariablen anpassen (optional):
cp .env.example .env
nano .env- Stack starten:
docker-compose up -dCOMPOSE_PROJECT_NAME=ofelia # Präfix für Container-Namen
TIMEZONE=Europe/Berlin # Timezone fĂĽr Cron-JobsFĂĽ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-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
- Cron-Format:
0 2 * * *(täglich um 2 Uhr) - Go-Format:
@every 5m(alle 5 Minuten) - Shortcuts:
@hourly,@daily,@weekly,@monthly
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-Dateiendaily: Rotationsintervall (daily, weekly, monthly)compress: Logs nach Rotation komprimieren
# Stack starten
docker-compose up -d
# Logs anzeigen
docker-compose logs -f ofelia
# Stack stoppen
docker-compose down
# Stack neu starten
docker-compose restart# Ofelia-Logs anzeigen
docker logs ofelia
# Job-Logs im logs-Verzeichnis
tail -f logs/*.logdocker exec ofelia-logrotate logrotate /etc/logrotate.conf.
├── 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
- Docker Socket ist read-only gemountet (
:ro) - Keine Root-Rechte erforderlich
- Logs werden in separatem Volume gespeichert
- Keine sensiblen Daten in den Container-Images
- Container läuft?
docker ps | grep ofelia- Labels korrekt gesetzt?
docker inspect <container-name> | grep ofelia- Ofelia-Logs prĂĽfen:
docker logs ofelia- Logrotate-Container läuft?
docker ps | grep logrotate- Manuell testen:
docker exec ofelia-logrotate logrotate -d /etc/logrotate.confservices:
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"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"Dieses Projekt ist Open Source (GPL-3.0-or-later) und kostenlos. Wenn es dir geholfen hat, freue ich mich ĂĽber deine UnterstĂĽtzung:
Made with ❤️ by WSC - Web SEO Consulting
- Ofelia by mcuadros
- Alpine Linux fĂĽr minimale Container-Images
Pull Requests sind willkommen! Für größere Änderungen öffne bitte zuerst ein Issue.