增加docke部署

This commit is contained in:
2026-04-10 16:44:13 +08:00
parent e2f8054794
commit cd4ddb606d
5076 changed files with 701092 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
#!/bin/sh
# 每日定时任务(替代 Windows autorun.cmd
# 凌晨 4:00 执行,通过 Docker 内网直连 dlweb 容器
#
# 原 autorun.cmd 流程:
# 1. net stop HttpRequestService (停止 Synchronize.php 轮询)
# 2. POST SynchronizeReportData.php同步报表数据
# 3. net start HttpRequestService (恢复 Synchronize.php 轮询)
#
# Docker 等价实现:通过共享文件 /shared/syncjob.pause 暂停/恢复 syncjob
DLWEB_URL="${DLWEB_INTERNAL_URL:-http://dlweb}"
PAUSE_FILE="/shared/syncjob.pause"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "========================================"
echo "[${TIMESTAMP}] 开始执行每日定时任务"
echo "========================================"
# --------------------------------------------------------
# 1. 停止同步服务(等价于 net stop HttpRequestService
# 创建暂停信号文件syncjob 检测到后会跳过轮询
# --------------------------------------------------------
echo "[$(date '+%H:%M:%S')] 暂停 syncjob 同步服务..."
touch "${PAUSE_FILE}"
# 等待当前可能正在执行的请求完成
sleep 5
# --------------------------------------------------------
# 2. 同步报表数据 (SynchronizeReportData.php)
# 从游戏数据库同步 report_agent_day、report_game_day 到代理后台
# 并生成 ct_report_info 报表
# 与原 autorun.cmd 一致:不设超时、不重试,等待自然执行完毕
# --------------------------------------------------------
echo "[$(date '+%H:%M:%S')] 开始同步报表数据..."
RESULT=$(curl -sf -X POST "${DLWEB_URL}/ext/SynchronizeReportData.php" 2>&1)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo "[$(date '+%H:%M:%S')] 报表同步完成: ${RESULT}"
else
echo "[$(date '+%H:%M:%S')] 报表同步失败(${EXIT_CODE}): ${RESULT}"
fi
# --------------------------------------------------------
# 3. 恢复同步服务(等价于 net start HttpRequestService
# 删除暂停信号文件syncjob 恢复正常轮询
# --------------------------------------------------------
echo "[$(date '+%H:%M:%S')] 恢复 syncjob 同步服务..."
rm -f "${PAUSE_FILE}"
echo "========================================"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 每日定时任务执行完毕"
echo "========================================"

View File

@@ -0,0 +1,25 @@
#!/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