From 0b452966c9f9e8f3a3161df196fca48ac7cd88a6 Mon Sep 17 00:00:00 2001 From: xiaoxia-agent Date: Fri, 11 Sep 2026 10:22:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(web,=20P0):=20nginx=20entrypoint=20ln=20-sf?= =?UTF-8?q?=20=E5=9C=A8alpine=E5=9F=BA=E7=A1=80=E9=95=9C=E5=83=8F=E4=B8=8B?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=B7=B2=E6=9C=89=E6=96=87=E4=BB=B6=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=AF=BC=E8=87=B4=E5=AE=B9=E5=99=A8=E6=97=A0=E9=99=90?= =?UTF-8?q?=E9=87=8D=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:base nginx镜像里 /etc/nginx/conf.d/default.conf 是普通文件(非symlink/目录), alpine busybox 的 ln -sf 在 target 已存在且为普通文件时行为异常, 报错 'File exists' 导致容器启动失败并进入 restart loop。 修复:ln 前先 rm -f 删除原有 default.conf。 顺带合入 lipsync P0 后端修复 (#1854 已合入但被 web 崩溃阻塞部署)。 --- infra/docker/nginx-entrypoint.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 -- 2.54.0