Add Docker deployment as the recommended production setup.

Include Dockerfile, docker-compose on port 3130, npm mirror config, deploy scripts, and DOCKER.md; keep PM2 docs as fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-10 21:13:12 +08:00
parent e44cdf913e
commit a1667eac51
10 changed files with 268 additions and 15 deletions
+9 -1
View File
@@ -16,13 +16,21 @@ git pull origin main
echo "==> 安装依赖..."
npm ci || npm install
echo "==> 停止 PM2(避免无构建产物时反复重启)..."
pm2 stop "$APP_NAME" 2>/dev/null || true
echo "==> 生产构建..."
npm run build
if [[ ! -f .next/BUILD_ID ]]; then
echo "ERROR: 构建失败,未找到 .next/BUILD_ID,请先解决 npm run build 报错后再启动。"
exit 1
fi
echo "==> 确保日志目录存在..."
mkdir -p logs
echo "==> 启 PM2..."
echo "==> 启 PM2..."
if pm2 describe "$APP_NAME" > /dev/null 2>&1; then
pm2 restart "$APP_NAME"
else
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# 知命阁 Docker 部署脚本
# 用法:cd /opt/zhimingge && bash scripts/docker-deploy.sh
set -euo pipefail
APP_DIR="/opt/zhimingge"
APP_PORT="${PORT:-3130}"
cd "$APP_DIR"
if [[ ! -f .env.local ]]; then
echo "ERROR: 缺少 .env.local,请先:cp .env.example .env.local && nano .env.local"
exit 1
fi
echo "==> 拉取最新代码..."
git pull origin main
echo "==> 停止旧 PM2 进程(若存在)..."
pm2 stop zhimingge 2>/dev/null || true
pm2 delete zhimingge 2>/dev/null || true
echo "==> 构建 Docker 镜像..."
docker compose build
echo "==> 启动容器..."
docker compose up -d
echo "==> 状态"
docker compose ps
sleep 2
curl -s -o /dev/null -w "HTTP %{http_code}\n" "http://127.0.0.1:${APP_PORT}" || true
echo "==> 部署完成。日志:docker compose logs -f zhimingge"