add cron task
This commit is contained in:
+8
-3
@@ -13,10 +13,15 @@ RUN xcaddy build \
|
|||||||
|
|
||||||
FROM docker.io/library/caddy:latest
|
FROM docker.io/library/caddy:latest
|
||||||
|
|
||||||
RUN apk update && apk add --no-cache git git-daemon cgit python3 py3-pygments py3-markdown py3-docutils groff curl
|
RUN apk update && apk add --no-cache git git-daemon cgit python3 py3-pygments py3-markdown py3-docutils groff curl dcron
|
||||||
|
|
||||||
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
||||||
|
|
||||||
COPY caddy/entrypoint.sh /usr/local/bin/entrypoint.sh
|
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
RUN chmod +x /usr/local/bin/entrypoint.sh
|
COPY update_geodb.sh /usr/local/bin/update_geodb.sh
|
||||||
|
|
||||||
|
RUN chmod +x /usr/local/bin/entrypoint.sh \
|
||||||
|
&& chmod +x /usr/local/bin/update_geodb.sh \
|
||||||
|
&& echo "0 0 */3 * * /usr/local/bin/update_geodb.sh > /proc/1/fd/1 2>/proc/1/fd/2" | crontab -
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||||
|
|||||||
+4
-32
@@ -1,38 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
GEODB_DIR="/config/geodb"
|
# 首次执行 GeoLite2 数据库更新脚本,确保 Caddy 启动前文件可用
|
||||||
GEODB_FILE="$GEODB_DIR/GeoLite2-Country.mmdb"
|
/usr/local/bin/update_geodb.sh
|
||||||
GEODB_URL="https://git.io/GeoLite2-Country.mmdb"
|
|
||||||
TWO_WEEKS_SECONDS=1209600 # 14 * 24 * 60 * 60
|
|
||||||
|
|
||||||
mkdir -p "$GEODB_DIR"
|
# 启动 cron 服务
|
||||||
|
crond -b -L /var/log/cron.log
|
||||||
if [ ! -f "$GEODB_FILE" ]; then
|
|
||||||
echo "GeoLite2-Country.mmdb 不存在,正在下载..."
|
|
||||||
curl -sSL "$GEODB_URL" -o "$GEODB_FILE"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "GeoLite2-Country.mmdb 下载成功."
|
|
||||||
else
|
|
||||||
echo "GeoLite2-Country.mmdb 下载失败."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# 检查文件修改时间
|
|
||||||
FILE_MOD_TIME=$(stat -c %Y "$GEODB_FILE")
|
|
||||||
CURRENT_TIME=$(date +%s)
|
|
||||||
AGE=$((CURRENT_TIME - FILE_MOD_TIME))
|
|
||||||
|
|
||||||
if [ "$AGE" -ge "$TWO_WEEKS_SECONDS" ]; then
|
|
||||||
echo "GeoLite2-Country.mmdb 已超过两周未更新,正在下载新版本..."
|
|
||||||
curl -sSL "$GEODB_URL" -o "$GEODB_FILE"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "GeoLite2-Country.mmdb 下载成功."
|
|
||||||
else
|
|
||||||
echo "GeoLite2-Country.mmdb 下载失败."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "GeoLite2-Country.mmdb 在两周内已更新,跳过下载."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 执行原始的 Caddy ENTRYPOINT
|
# 执行原始的 Caddy ENTRYPOINT
|
||||||
exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
|
exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
GEODB_DIR="/config/geodb"
|
||||||
|
GEODB_FILE="$GEODB_DIR/GeoLite2-Country.mmdb"
|
||||||
|
GEODB_URL="https://git.io/GeoLite2-Country.mmdb"
|
||||||
|
INTERVAL_SECONDS=259200 # 3 * 24 * 60 * 60
|
||||||
|
|
||||||
|
mkdir -p "$GEODB_DIR"
|
||||||
|
|
||||||
|
if [ ! -f "$GEODB_FILE" ]; then
|
||||||
|
echo "GeoLite2-Country.mmdb 不存在,正在下载..."
|
||||||
|
curl -sSL "$GEODB_URL" -o "$GEODB_FILE"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "GeoLite2-Country.mmdb 下载成功."
|
||||||
|
else
|
||||||
|
echo "GeoLite2-Country.mmdb 下载失败."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# 检查文件修改时间
|
||||||
|
FILE_MOD_TIME=$(stat -c %Y "$GEODB_FILE")
|
||||||
|
CURRENT_TIME=$(date +%s)
|
||||||
|
AGE=$((CURRENT_TIME - FILE_MOD_TIME))
|
||||||
|
|
||||||
|
if [ "$AGE" -ge "$INTERVAL_SECONDS" ]; then
|
||||||
|
echo "GeoLite2-Country.mmdb 正在下载新版本..."
|
||||||
|
curl -sSL "$GEODB_URL" -o "$GEODB_FILE"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "GeoLite2-Country.mmdb 下载成功."
|
||||||
|
else
|
||||||
|
echo "GeoLite2-Country.mmdb 下载失败."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "GeoLite2-Country.mmdb 跳过下载."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user