diff --git a/infra/docker/nginx-entrypoint.sh b/infra/docker/nginx-entrypoint.sh index 88c25d45c..a0ca7653b 100755 --- a/infra/docker/nginx-entrypoint.sh +++ b/infra/docker/nginx-entrypoint.sh @@ -2,16 +2,21 @@ # Select nginx config based on APP_ENV (staging/production). # Both configs are baked into the image at well-known paths. # nginx reads config only at startup, so symlink before exec. +# 注意:基础镜像 /etc/nginx/conf.d/default.conf 是普通文件(非 symlink/目录), +# alpine busybox ln -sf 在 target 已存在且为普通文件时行为不稳定(会尝试在 +# target 目录下建子链接),必须先 rm 再 ln 才能正确替换。 set -e NGINX_CONF_DIR="/etc/nginx/conf.d" case "${APP_ENV:-production}" in staging) - ln -sf /etc/nginx/nginx-staging.conf "$NGINX_CONF_DIR/default.conf" + rm -f "$NGINX_CONF_DIR/default.conf" + ln -s /etc/nginx/nginx-staging.conf "$NGINX_CONF_DIR/default.conf" ;; *) - ln -sf /etc/nginx/nginx-production.conf "$NGINX_CONF_DIR/default.conf" + rm -f "$NGINX_CONF_DIR/default.conf" + ln -s /etc/nginx/nginx-production.conf "$NGINX_CONF_DIR/default.conf" ;; esac