Docker cron Problem

Liebe Gemeinschaft,

ich betreibe meine Nextcloud-Instanz als Docker. Hier besteht das bekannte cron-Problem. Momentan starte ich jedes mal, wenn watchtower mir angibt, dass der Container upgedated wurde, manuell mit “exec” die cron.sh. Das ist aber nicht so optimal, zumal ich erst zeitveresetzt es schaffe den Befehl auszufĂŒhren.
Hier im Forum habe ich diese Lösung gefunden.

Ich frage mich ob es nicht sinnvoller wĂ€re ĂŒber einen Cron am Host den Befehl ausfĂŒhren zu lassen. Was meint ihr?

Gruß Martin

  • VPS-Server bei contabo
  • Ubuntu Server 20.04 LTS - Instanz als Docker
  • Nextcloud Version: 24.0.0
  • PHP Version: 8.0.9
  • Welche Datenbank? MariaDB
  • NC in Docker

Ich weiss nicht welches “bekannte Problem” du ansprichst
 Mein cron funktioniert schon immer problemlos und wird bei (docker-compose) updates automatisch aktualisiert. Automatische Updates (durch watchtower oÄ) finde ich im server Bereich zu gefĂ€hlich und daher ein No-Go


Danke wwe fĂŒr deine Antwort. Da ich eine andere Meinung zu automatisierten updates habe, lasse ich deinen Beitrag unbeantwortet so stehen. Ich habe die Lösung gefunden:

Habe auf meinem Server in /etc/crontab folgendes eintragen:

#Ansible: nextcloud
*/5 *  *  *  * root docker exec -u www-data -t nextcloud php -f /var/www/html/cron.php
4 Likes

Hi @djimno ,

hast du mit dieser Lösung bisher Erfolg gehabt?
Ich hatte das frĂŒher auch so gemacht, dann aber in meiner etwas grĂ¶ĂŸeren Instanz festgestellt, dass der Cronjob (manchmal) lĂ€nger als 5 Minuten lĂ€uft und dann hatte ich Probleme mit ewig laufenden Cronjobs.
Das habe ich darauf zurĂŒckgefĂŒhrt, dass sich dann zwei Aufrufe von cron.php in die Quere kamen.

Kann mittlerweile auch in cron.php abgefangen sein, aber ich habe dazu dann folgendes kleine Skript geschrieben (ich hoste mehrere Nextclouds auf dem Server, deshalb im Logfile die Nummer der Nextcloud):

#!/bin/bash
info() { printf "%s %s %s\n" "$( date )" "[NC1]" "$*" >&2; }
lockfile=$0.lock
if [ -e "$lockfile" ] 
then
    info "$0 lÀuft noch.... skipping execution"
    exit 0
fi
info "$0 lÀuft los" 
touch $lockfile
/usr/bin/docker exec --user www-data -t nc1 php cron.php 
info "$0 endet"
rm -f "$lockfile"

und das hab ich dann per Cronjob aufgerufen. Seither hab ich Ruhe.

WĂŒrde mich interessieren, ob man diesen “Handstand” noch benötigt.

LG Jesko

Hi @anschuetz ,

ich wĂŒrde fast behaupten, dieses script ist aktuell nicht mehr nötig.
Meine Installation sieht zwar etwas anders aus, aber im Prinzip sollte es da gleiche sein:

Ich habe meine NC-Installation (NC 26.0!) auf einer Synology DS1621+ mit DSM 7.1 laufen. Um hier eine cron-Job zu starten, nutze ich den ein eingebauten Task-Scheduler, der jetztendlich auch nur cron-Jobs im darunterliegenden Linux (der Synology-NAS) generiert. Hier fĂŒhre ich im Intervall von 5 Minuten defacto den gleichen Aufruf auf wie du, nĂ€mlich:

docker exec -u www-data -t Nextcloud php -f /var/www/html/cron.php

Wenn jetzt der vorherige job noch lÀuft, erhalte ich eine Meldung, dass der neue job abgebrochen wurde.
Probiers mal aus


LG Steffen

This topic was automatically closed after 10 days. New replies are no longer allowed.