标题比较长,应该也只有以 docker 方式搭建中才会遇到这个问题。
docker 搭建时,在 管理设置 -> 基本设置 中,对于后台任务的默认方式是 AJAX,改成官方推荐的 cron 方式之后,就会出现无法运行 cron 的状况,表现形式为提示 “上次任务执行于 xxx minutes ago。”(超出 5 分钟)。
解决方案 1:
在 宿主机 中添加 crontab 任务(crontab -e
),每隔 5 分钟执行 docker 对应的 nextcloud 容器内的 cron:
*/5 * * * * docker exec -u www-data nextcloud php /var/www/html/cron.php
注意:上面语句中的
nextcloud
为你 docker 容器的名字,可能不同!解决方案 2:
在 docker compose 文件中添加一个 cron 容器(示例):
version: '3' services: db: image: mariadb:10.6 command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW restart: always volumes: - db:/var/lib/mysql:Z environment: - MYSQL_ROOT_PASSWORD= - MARIADB_AUTO_UPGRADE=1 - MARIADB_DISABLE_UPGRADE_BACKUP=1 env_file: - db.env redis: image: redis:alpine restart: always app: image: nextcloud:apache restart: always ports: - 127.0.0.1:8080:80 volumes: - nextcloud:/var/www/html:z environment: - MYSQL_HOST=db - REDIS_HOST=redis env_file: - db.env depends_on: - db - redis cron: image: nextcloud:apache restart: always volumes: - nextcloud:/var/www/html:z entrypoint: /cron.sh depends_on: - db - redis volumes: db: nextcloud:
感谢
https://help.nextcloud.com/t/nextcloud-docker-container-best-way-to-run-cron-job/157734/3
Comments NOTHING