Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -23,13 +23,28 @@ docker run --rm \
|
||||
-v /var/www/pay:/var/www/pay:ro \
|
||||
"$EDGE_IMAGE" nginx -t
|
||||
|
||||
rollback() {
|
||||
echo "==> !! 自动回滚:停 edge,恢复宿主 nginx" >&2
|
||||
docker-compose -p pangolin stop edge >/dev/null 2>&1 || true
|
||||
systemctl enable nginx >/dev/null 2>&1 || true
|
||||
systemctl start nginx || echo " !! 宿主 nginx 启动失败,请手动 systemctl start nginx" >&2
|
||||
echo " 已回滚到宿主 nginx。" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "==> [2/4] 停用宿主 nginx 并起 edge 容器(交接窗口,秒级)"
|
||||
systemctl stop nginx
|
||||
systemctl disable nginx 2>/dev/null || true
|
||||
docker-compose -p pangolin up -d edge singbox
|
||||
if ! docker-compose -p pangolin up -d edge singbox; then
|
||||
echo " edge 启动失败" >&2; rollback
|
||||
fi
|
||||
|
||||
echo "==> [3/4] 等待并健康检查"
|
||||
sleep 2
|
||||
# edge 容器必须在跑
|
||||
if [[ "$(docker inspect -f '{{.State.Running}}' pangolin-edge 2>/dev/null)" != "true" ]]; then
|
||||
echo " edge 容器未运行" >&2; docker logs pangolin-edge 2>&1 | tail -10; rollback
|
||||
fi
|
||||
fail=0
|
||||
# REALITY 经 443 → 10443(Marzban),SNI=www.cloudflare.com 应握手成功
|
||||
if echo | timeout 10 openssl s_client -connect 127.0.0.1:443 -servername www.cloudflare.com >/dev/null 2>&1; then
|
||||
@@ -45,6 +60,5 @@ echo "==> [4/4] 结果"
|
||||
if [[ "$fail" == "0" ]]; then
|
||||
echo " 切换成功 ✅(宿主 nginx 已停,配置保留可回滚)"
|
||||
else
|
||||
echo " ❌ 检查未全通过。回滚:docker-compose -p pangolin stop edge && systemctl start nginx" >&2
|
||||
exit 1
|
||||
echo " 部分检查未通过" >&2; rollback
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user