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

8.6 KiB
Raw Blame History

客户一键部署指南(Registry 版本)

🎯 目标

让其他公司能够一条命令完成部署,无需源码,直接从私有镜像仓库拉取镜像。

✅ 当前方案已实现

搭建完 Docker Registry 后,完全符合"一键部署"的目标:

  1. ✅ 无需源码:客户不需要源代码,只需要配置文件
  2. ✅ 一条命令:docker compose up -d 即可完成部署
  3. ✅ 私有镜像:从 Registry 拉取,代码不泄露
  4. ✅ 自动化:自动配置数据库、MinIO、网络等

📦 客户部署流程

方案 A:最简单(推荐 ⭐⭐⭐)

客户只需要 3 步:

步骤 1:下载部署包

提供压缩包,包含:

  • docker-compose.prod.yml - 生产配置
  • .env.example - 环境变量模板
  • README.md - 部署说明

步骤 2:配置环境变量

# 复制模板
cp .env.example .env

# 编辑配置(只需修改必要的)
nano .env

最小配置(其他使用默认值):

# Registry 地址(必须)
DOCKER_REGISTRY=45.249.208.118:5000

# 服务器 IP(必须)
SERVER_IP=客户服务器IP

# 数据库密码(建议修改)
POSTGRES_PASSWORD=客户设置的密码
MINIO_ROOT_PASSWORD=客户设置的密码

步骤 3:一键启动

docker compose -f docker-compose.prod.yml up -d

完成! 等待 1-2 分钟,访问 http://客户服务器IP:4320


方案 B:全自动安装(包含 Docker 安装)

如果客户服务器没有 Docker,提供自动安装脚本:

步骤 1:下载部署包

步骤 2:运行自动安装脚本

# Linux
bash install-auto.sh

# Windows
install-auto-windows.bat

脚本会自动:

  • ✅ 检测并安装 Docker(如未安装)
  • ✅ 检测并安装 Docker Compose(如未安装)
  • ✅ 配置 Docker 允许不安全的 Registry
  • ✅ 创建配置文件
  • ✅ 拉取镜像
  • ✅ 启动服务
  • ✅ 初始化数据库

🔧 配置文件说明

docker-compose.prod.yml(已配置好)

services:
  app:
    # 从 Registry 拉取镜像(无需源码)
    image: ${DOCKER_REGISTRY:-45.249.208.118:5000}/flnxi-material:pro-${IMAGE_TAG:-latest}
    # ... 其他配置已自动设置

.env 文件(客户只需修改必要项)

# ============================================
# Registry 配置(必须)
# ============================================
DOCKER_REGISTRY=45.249.208.118:5000
IMAGE_TAG=latest

# ============================================
# 服务器配置(必须)
# ============================================
SERVER_IP=客户服务器IP地址
APP_PORT=4320

# ============================================
# 数据库配置(建议修改密码)
# ============================================
POSTGRES_USER=postgres
POSTGRES_PASSWORD=客户设置的密码
POSTGRES_DB=flnxi

# ============================================
# MinIO 配置(建议修改密码)
# ============================================
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=客户设置的密码
S3_BUCKET=youyidian3d

# ============================================
# 认证配置(建议修改)
# ============================================
NEXTAUTH_SECRET=客户生成的随机密钥
NEXTAUTH_URL=http://${SERVER_IP}:${APP_PORT}

🚀 部署包内容

最小部署包(推荐)

deploy-package/
├── docker-compose.prod.yml    # 生产配置(已配置好)
├── .env.example               # 环境变量模板
├── README.md                  # 部署说明
└── install.sh                 # 快速安装脚本(可选)

完整部署包(包含自动安装)

deploy-package/
├── docker-compose.prod.yml    # 生产配置
├── .env.example               # 环境变量模板
├── README.md                  # 部署说明
├── install-auto.sh            # 全自动安装(Linux)
├── install-auto-windows.bat   # 全自动安装(Windows)
└── install.sh                 # 快速安装(已有 Docker)

📋 客户部署检查清单

部署前

  • 服务器已安装 Docker(或使用自动安装脚本)
  • 服务器已安装 Docker Compose(或使用自动安装脚本)
  • 服务器有至少 2GB 内存
  • 服务器有至少 20GB 磁盘空间
  • 服务器可以访问 Registry(45.249.208.118:5000)

部署中

  • 已配置 .env 文件
  • 已配置 DOCKER_REGISTRY 环境变量
  • 已配置 SERVER_IP 环境变量
  • 已修改数据库密码(生产环境)

部署后

  • 服务正常启动(docker compose ps)
  • 可以访问应用(http://服务器IP:4320)
  • 数据库连接正常
  • MinIO 存储正常
  • 可以上传素材

🔐 Registry 访问配置

如果 Registry 需要认证

方式 1:在 .env 中配置(推荐)

# 添加到 .env 文件
REGISTRY_USER=admin
REGISTRY_PASSWORD=客户获取的密码

方式 2:在服务器上登录

# 客户在服务器上执行
docker login 45.249.208.118:5000 -u admin -p 密码

如果 Registry 不需要认证(HTTP)

配置 Docker 允许不安全的 Registry

# 在服务器上配置
cat > /etc/docker/daemon.json <<EOF
{
  "insecure-registries": ["45.249.208.118:5000"]
}
EOF

# 重启 Docker
systemctl restart docker

📝 客户部署文档模板

创建 docs/guides/CUSTOMER_DEPLOYMENT_README.md 供客户使用:

# FLNXI素材库 - 快速部署指南

## 🚀 一键部署(3 步完成)

### 步骤 1:配置环境变量

```bash
cp .env.example .env
nano .env  # 修改必要的配置

必须修改:

  • DOCKER_REGISTRY - Registry 地址
  • SERVER_IP - 您的服务器 IP
  • POSTGRES_PASSWORD - 数据库密码(建议修改)
  • MINIO_ROOT_PASSWORD - 存储密码(建议修改)

步骤 2:配置 Docker(如果 Registry 使用 HTTP)

# 允许不安全的 Registry
cat > /etc/docker/daemon.json <<EOF
{
  "insecure-registries": ["45.249.208.118:5000"]
}
EOF

# 重启 Docker
systemctl restart docker

步骤 3:启动服务

docker compose -f docker-compose.prod.yml up -d

完成! 等待 1-2 分钟,访问 http://您的服务器IP:4320

📞 技术支持

如有问题,请联系技术支持。


---

## 🎯 与目标的一致性

### ✅ 已实现的目标

1. **一条命令部署** ✅
   ```bash
   docker compose -f docker-compose.prod.yml up -d
  1. 无需源码 ✅

    • 客户不需要源代码
    • 只需要配置文件和镜像
  2. 私有镜像 ✅

    • 从 Registry 拉取
    • 代码不泄露
  3. 自动化配置 ✅

    • 自动配置数据库
    • 自动配置 MinIO
    • 自动配置网络

📊 对比

特性 当前方案(Registry) 之前方案(tar 上传)
部署命令 docker compose up -d 需要上传 tar + 加载 + 部署
需要源码 ❌ 不需要 ✅ 需要
代码保护 ✅ 私有镜像 ❌ 源码可见
部署时间 1-2 分钟 5-10 分钟
客户操作 3 步 10+ 步

🚀 下一步

  1. ✅ 搭建 Registry(已完成)
  2. ✅ 推送镜像到 Registry(使用 一键镜像部署.ps1)
  3. ⏳ 创建客户部署包(包含配置文件)
  4. ⏳ 编写客户部署文档(简化版)
  5. ⏳ 测试客户部署流程(模拟客户环境)

📦 创建客户部署包脚本

可以创建一个脚本自动生成客户部署包:

# scripts/deploy/create-customer-package.ps1
# 创建客户部署包

$packageDir = "customer-deploy-package"
New-Item -ItemType Directory -Path $packageDir -Force | Out-Null

# 复制必要文件
Copy-Item "docker-compose.prod.yml" "$packageDir/"
Copy-Item ".env.example" "$packageDir/"

# 创建客户 README
@"
# FLNXI素材库 - 快速部署指南

## 一键部署(3 步)

1. 配置 .env 文件
2. 运行: docker compose -f docker-compose.prod.yml up -d
3. 访问: http://您的服务器IP:4320

详细说明请查看 README.md
"@ | Out-File "$packageDir/README.md" -Encoding UTF8

# 打包
Compress-Archive -Path "$packageDir/*" -DestinationPath "customer-deploy-package.zip"

Write-Host "✓ 客户部署包已创建: customer-deploy-package.zip" -ForegroundColor Green

✅ 总结

是的,搭建完 Docker Registry 后,完全符合"一键部署"的目标!

客户现在只需要:

  1. 下载部署包(配置文件)
  2. 修改 .env 文件(3-5 个配置项)
  3. 运行 docker compose up -d

无需源码,一条命令,完全自动化! 🎉