mirror of
https://github.com/yanhao98/docker-cron.git
synced 2026-02-04 10:30:33 +08:00
feat(docker): 添加启动时运行 cron 任务的选项
This commit is contained in:
@@ -31,6 +31,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- APK_PACKAGES=curl jq
|
- APK_PACKAGES=curl jq
|
||||||
- CRON_SCHEDULE=*/1 * * * *
|
- CRON_SCHEDULE=*/1 * * * *
|
||||||
|
- RUN_CRON_ON_START=true
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- ./backups:/backups:ro
|
- ./backups:/backups:ro
|
||||||
|
|||||||
@@ -17,12 +17,13 @@ CRON_SCHEDULE="${CRON_SCHEDULE:-*/30 * * * *}"
|
|||||||
INIT_SCRIPTS_DIR="${INIT_SCRIPTS_DIR:-/docker-entrypoint-init.d}"
|
INIT_SCRIPTS_DIR="${INIT_SCRIPTS_DIR:-/docker-entrypoint-init.d}"
|
||||||
CRON_TASKS_DIR="${CRON_TASKS_DIR:-/docker-cron.d}"
|
CRON_TASKS_DIR="${CRON_TASKS_DIR:-/docker-cron.d}"
|
||||||
APK_PACKAGES="${APK_PACKAGES:-}"
|
APK_PACKAGES="${APK_PACKAGES:-}"
|
||||||
|
RUN_CRON_ON_START="${RUN_CRON_ON_START:-false}"
|
||||||
|
|
||||||
STDOUT_FD="/proc/1/fd/1"
|
STDOUT_FD="/proc/1/fd/1"
|
||||||
STDERR_FD="/proc/1/fd/2"
|
STDERR_FD="/proc/1/fd/2"
|
||||||
CRON_SCRIPT="/usr/local/bin/run-cron-tasks.sh"
|
CRON_SCRIPT="/usr/local/bin/run-cron-tasks.sh"
|
||||||
|
|
||||||
readonly CRON_SCHEDULE INIT_SCRIPTS_DIR CRON_TASKS_DIR APK_PACKAGES STDOUT_FD STDERR_FD CRON_SCRIPT
|
readonly CRON_SCHEDULE INIT_SCRIPTS_DIR CRON_TASKS_DIR APK_PACKAGES RUN_CRON_ON_START STDOUT_FD STDERR_FD CRON_SCRIPT
|
||||||
|
|
||||||
if [ -z "$CRON_SCHEDULE" ]; then
|
if [ -z "$CRON_SCHEDULE" ]; then
|
||||||
log_error "CRON_SCHEDULE is empty; refusing to start."
|
log_error "CRON_SCHEDULE is empty; refusing to start."
|
||||||
@@ -72,6 +73,19 @@ fi
|
|||||||
|
|
||||||
log_info "initialization complete"
|
log_info "initialization complete"
|
||||||
|
|
||||||
|
case "$RUN_CRON_ON_START" in
|
||||||
|
1|[Tt][Rr][Uu][Ee]|[Yy][Ee][Ss])
|
||||||
|
log_info "running cron tasks once at startup"
|
||||||
|
if ! "$CRON_SCRIPT" >>"$STDOUT_FD" 2>>"$STDERR_FD"; then
|
||||||
|
log_error "startup execution of cron tasks failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
:
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
cron_env_file=/var/spool/cron/crontabs/root
|
cron_env_file=/var/spool/cron/crontabs/root
|
||||||
{
|
{
|
||||||
printf 'SHELL=/bin/sh\n'
|
printf 'SHELL=/bin/sh\n'
|
||||||
|
|||||||
Reference in New Issue
Block a user