feat(deploy): rebuild Next.js container after dist upload
Hybrid rendering requires the Next.js runtime to use the same build as the client assets served by Nginx. After uploading dist, sync public/ to the server project and rebuild/restart the novalon-website container so server action IDs and /_next/static references stay consistent.
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
#
|
||||
# 环境变量覆盖:
|
||||
# SERVER_IP SERVER_USER DEPLOY_ROOT PROJECT_NAME NGINX_CONTAINER
|
||||
# NEXTJS_CONTAINER COMPOSE_FILE COMPOSE_CMD
|
||||
# DOMAIN BACKUP_RETENTION_COUNT DIST_DIR
|
||||
# ============================================================
|
||||
|
||||
@@ -40,6 +41,9 @@ SERVER_USER="${SERVER_USER:-root}"
|
||||
DEPLOY_ROOT="${DEPLOY_ROOT:-/home/novalon/docker-app}"
|
||||
PROJECT_NAME="${PROJECT_NAME:-novalon-website}"
|
||||
NGINX_CONTAINER="${NGINX_CONTAINER:-novalon-nginx-secure}"
|
||||
NEXTJS_CONTAINER="${NEXTJS_CONTAINER:-novalon-website}"
|
||||
COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.server.yml}"
|
||||
COMPOSE_CMD="${COMPOSE_CMD:-docker-compose}"
|
||||
DOMAIN="${DOMAIN:-https://novalon.cn}"
|
||||
BACKUP_RETENTION="${BACKUP_RETENTION_COUNT:-${BACKUP_RETENTION:-3}}"
|
||||
DIST_DIR="${DIST_DIR:-dist}"
|
||||
@@ -252,6 +256,30 @@ cmd_deploy() {
|
||||
fi
|
||||
"
|
||||
|
||||
# 步骤 6.5: 同步 public 并重建 Next.js 容器
|
||||
# 混合渲染下,Nginx 提供新客户端资源,Next.js 容器也必须运行同一份构建,
|
||||
# 否则会出现 /_next/static 404 或 Server Reference ID 不匹配。
|
||||
log ""
|
||||
log "📋 步骤 6.5: 重建 Next.js 容器 ($NEXTJS_CONTAINER)"
|
||||
if [[ -d "$PROJECT_ROOT/public" ]]; then
|
||||
if [[ "$DRY_RUN" == "1" ]]; then
|
||||
log "🔍 [dry-run] rsync -az --delete \"$PROJECT_ROOT/public/\" $SERVER_USER@$SERVER_IP:$REMOTE_PROJECT_DIR/public/"
|
||||
else
|
||||
rsync -az --delete "$PROJECT_ROOT/public/" "$SERVER_USER@$SERVER_IP:$REMOTE_PROJECT_DIR/public/"
|
||||
fi
|
||||
fi
|
||||
run_remote "
|
||||
set -e
|
||||
cd '$REMOTE_PROJECT_DIR'
|
||||
if [ -f '$COMPOSE_FILE' ]; then
|
||||
$COMPOSE_CMD -f '$COMPOSE_FILE' build
|
||||
$COMPOSE_CMD -f '$COMPOSE_FILE' up -d
|
||||
echo \"✅ Next.js 容器已重建\"
|
||||
else
|
||||
echo \"⚠️ 未找到 $COMPOSE_FILE,跳过 Next.js 容器重建\"
|
||||
fi
|
||||
"
|
||||
|
||||
# 步骤 7: 验证生产环境
|
||||
if ! verify_remote; then
|
||||
if [[ "$AUTO_ROLLBACK" == "1" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user