标题比较长,应该也只有以 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