WuYongJie d1c6efc79d
Some checks failed
CI Check / check (push) Has been cancelled
feat: NAS 部署与 Harbor 推送流程
2025-12-03 14:39:06 +08:00
..

部署脚本使用说明

脚本分层

类型 文件 说明
Registry 统一入口(推荐) deploy-new-fixed.ps1 当前主推流程。脚本在本地构建镜像 → 推送到私有 Registry → 远端拉取 & docker compose up,默认走 SSH 密钥,自动做健康检查。
源码直传(备用) 安全部署.ps1 / 安全部署.sh 仍保留作为兜底方案:将源码打包上传到服务器后再构建。仅在客户环境暂未配置 Registry、或 Registry 不可用时启用。
本地打包 + 上传 local-build-and-upload.ps1 在无法推镜像的场景下,先本地构建/打包,再通过 scp 上传到远端解压并 docker compose up。
增量/应急脚本 deploy-optimized.ps1、execute-remote-deploy.ps1 早期“直接上传源码 + 服务器构建”方案仍保留以备回退,但已退出默认流程。调用前请确认服务器网络具备拉取基础镜像的能力。
辅助排障 check-*.ps1、fix-*.ps1、setup-*.ps1、manual-import-image.ps1、export-and-upload-image.ps1 等 用于检查 Docker/网络状态、修复私有 Registry、导出/导入镜像、创建客户离线包等。
安全工具 encrypt-password.ps1 / decrypt-password.ps1 需要以明文密码方式部署时,可通过该工具生成/验证加密密钥文件,避免将密码直接写进脚本。

ℹ️ 其余历史脚本(例如 deploy-simple.ps1、deploy-with-ssh-key.ps1 等)已在 2025-11-19 归档/删除,避免误用老旧流程。

快速开始

推荐:Registry 统一入口

# Windows
.\scripts\deploy\deploy-new-fixed.ps1 -KeyPath "C:\Users\xxx\.ssh\youyidian_prod_ed25519"

# macOS / Linux
powershell -File scripts\deploy\deploy-new-fixed.ps1

核心阶段:

  1. npm run check(可用 -SkipCheck 跳过)
  2. 本地 Docker 构建(自动加载/缓存基础镜像)
  3. 推送镜像到 ${Server}:5000/youyidian/<镜像名>:<Tag>
  4. 目标服务器拉取镜像并 docker compose up -d --no-deps app
  5. /api/health 轮询,确保服务恢复

常用参数:

  • -Server / -Username / -KeyPath:控制 SSH 目标与凭据
  • -EnvFile:指定构建期 .env.production
  • -SkipCheck / -SkipBuild / -SkipUpload:按需跳过阶段
  • -CleanImages -KeepImageCount 5:构建完成后自动清理旧镜像

兜底:安全部署脚本

.\scripts\deploy\安全部署.ps1

仍以“打包源码→上传→服务器内构建”方式执行,主要用于 Registry 无法使用的客户/测试环境。建议只在确认 Registry 流程不可行时才切换到该脚本。

其他:本地打包上传

.\scripts\deploy\local-build-and-upload.ps1 `
  -Server "192.168.1.100" `
  -User "root" `
  -Password "****" `
  -ProjectPath "/root/youyidian-3d"

⚠️ 此脚本仍会在服务器端执行 docker compose build,需要确保远程机器能访问基础镜像或提前导入(可搭配 export-and-upload-image.ps1 / manual-import-image.ps1)。

功能特点

  1. Registry 优先:镜像统一托管在 ${Server}:5000/youyidian/*,方便向客户交付。
  2. 阶段化输出:每个阶段均打印醒目标题,失败时便于快速定位。
  3. 健康检查:完成后自动轮询 /api/health,确认服务可用再退出。
  4. 容器友好:统一使用 docker compose,兼容 docker-compose。
  5. 数据保护(仅安全部署脚本):上传前自动备份 uploads/,部署完成再恢复。

安全建议

  1. 不要将密码提交到 Git:如果修改了脚本中的默认密码,确保不要提交到 Git 仓库
  2. 使用环境变量:可以考虑使用环境变量存储密码
  3. 定期更换密码:定期更换服务器密码
  4. 使用 SSH 密钥:如果可能,使用 SSH 密钥而不是密码(更安全)

故障排除

1. 连接失败

  • 检查服务器地址和端口是否正确
  • 检查网络连接
  • 检查防火墙设置

2. 密码错误

  • 确认密码正确
  • 检查用户名是否正确

3. 构建失败

  • 检查 Docker 是否正常运行
  • 检查 Docker Compose 是否安装
  • 查看构建日志获取详细错误信息

4. 文件上传失败

  • 检查文件路径是否正确
  • 检查服务器磁盘空间
  • 检查文件权限

注意事项

  1. BuildKit:Dockerfile 默认启用 BuildKit,如果本地未开启可通过 $env:DOCKER_BUILDKIT=1(PowerShell)或 export DOCKER_BUILDKIT=1(Bash)打开。
  2. PuTTY:仍需 plink.exe/pscp.exe(Windows 下)。可在 https://www.putty.org/ 下载。
  3. Host Key:首次连接服务器建议手动将指纹加入 known_hosts,避免脚本交互中断。
  4. 凭证管理:优先使用 SSH 密钥或加密密码文件,避免明文写入脚本。

更新日志

  • 2025-11-26:将 deploy-new-fixed.ps1 设为默认入口;安全部署脚本改为应急备用;README 按 Registry 流程重写。
  • 2025-11-19:清理 legacy 脚本,仅保留安全部署 + 本地打包路径;README 改为按场景列举。
  • v1.0.0:初始版本,支持 Docker 构建缓存、密码/密钥认证、自动备份。