#!/bin/sh # pangolin-edge 入口:前台跑 nginx,后台跑证书续期(续期后在【本容器内】热重载 nginx)。 # 续期 = certbot renew(DNS-01/Cloudflare),无需 docker socket / 宿主 cron / 跨容器信号。 set -e # 后台续期循环:每 12h 检查一次;有证书续期则热重载,无则什么都不做。 ( # 启动后先等一会,避免与 nginx 启动抢资源 sleep 60 while true; do if certbot renew --quiet --deploy-hook "nginx -s reload"; then : else echo "[pangolin] certbot renew 失败,下个周期重试" >&2 fi sleep 12h done ) & # 前台:沿用官方入口脚本(会执行 /docker-entrypoint.d/*)再启动 nginx exec /docker-entrypoint.sh nginx -g 'daemon off;'