26 lines
989 B
Bash
26 lines
989 B
Bash
#!/bin/sh
|
||
# cronjob 容器入口:注入环境变量到 crontab,启动 crond
|
||
|
||
# 安装 curl(仅首次,后续重启容器时已安装则跳过)
|
||
command -v curl > /dev/null 2>&1 || apk add --no-cache curl > /dev/null 2>&1
|
||
|
||
# 确保脚本有执行权限(Windows 开发环境挂载的文件可能缺少 +x)
|
||
chmod +x /app/daily-task.sh 2>/dev/null
|
||
|
||
# 将当前环境变量导出到文件,供 cron 任务使用(cron 不会继承容器环境变量)
|
||
# 排除特殊变量,导出所有业务相关配置
|
||
env | grep -v -E '^(HOME|PATH|HOSTNAME|SHLVL|PWD|_)=' > /etc/environment 2>/dev/null
|
||
|
||
# 读取调度表达式,默认凌晨 4:00
|
||
CRON_SCHEDULE="${CRON_SCHEDULE:-0 4 * * *}"
|
||
|
||
# 生成 crontab
|
||
echo "${CRON_SCHEDULE} . /etc/environment; /app/daily-task.sh >> /proc/1/fd/1 2>&1" > /etc/crontabs/root
|
||
|
||
echo "[cronjob] schedule: ${CRON_SCHEDULE}"
|
||
echo "[cronjob] target: ${DLWEB_INTERNAL_URL:-http://dlweb}"
|
||
echo "[cronjob] starting crond..."
|
||
|
||
# 前台运行 crond
|
||
crond -f -l 2
|