diff --git a/caddy/Containerfile b/caddy/Containerfile index 6aba237..a2b5ac4 100644 --- a/caddy/Containerfile +++ b/caddy/Containerfile @@ -13,6 +13,10 @@ RUN xcaddy build \ 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 +RUN apk update && apk add --no-cache git git-daemon cgit python3 py3-pygments py3-markdown py3-docutils groff curl COPY --from=builder /usr/bin/caddy /usr/bin/caddy + +COPY caddy/entrypoint.sh /usr/local/bin/entrypoint.sh +RUN chmod +x /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/caddy/entrypoint.sh b/caddy/entrypoint.sh new file mode 100644 index 0000000..cf06b57 --- /dev/null +++ b/caddy/entrypoint.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +GEODB_DIR="/config/geodb" +GEODB_FILE="$GEODB_DIR/GeoLite2-Country.mmdb" +GEODB_URL="https://git.io/GeoLite2-Country.mmdb" +TWO_WEEKS_SECONDS=1209600 # 14 * 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 "$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 +exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile