新增NAS一键打包部署脚本及Docker部署方案
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
# CCDI Docker 后端部署 Implementation Plan
|
||||
|
||||
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||
|
||||
**Goal:** 为 Spring Boot 后端与 `lsfx mock server` 建立可构建、可上传、可在服务器运行的 Docker 部署链路。
|
||||
|
||||
**Architecture:** 后端产物继续使用 Maven 构建出的 `ruoyi-admin.jar`,运行时通过 Java 21 容器加载 `local` profile。`lsfx mock server` 作为独立 Python 服务纳入仓库,并在 Compose 中与后端共享网络命名空间,以兼容现有 `http://localhost:8000` 配置。
|
||||
|
||||
**Tech Stack:** Maven, Spring Boot 3, Java 21, Docker Compose, Python 3.11, FastAPI, PowerShell, Paramiko
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 整理 `lsfx mock server` 到主仓库
|
||||
|
||||
**Files:**
|
||||
- Create: `lsfx-mock-server/**`
|
||||
- Modify: `docs/plans/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
- Test: `lsfx-mock-server/tests/test_api.py`
|
||||
|
||||
**Step 1: 复制并清理运行文件**
|
||||
|
||||
- 从现有工作树复制 `main.py`、`config/`、`models/`、`routers/`、`services/`、`utils/`、`requirements.txt`、`tests/`
|
||||
- 排除 `__pycache__`、`.pytest_cache`
|
||||
|
||||
**Step 2: 运行 mock server 测试**
|
||||
|
||||
Run: `python -m pytest lsfx-mock-server/tests -q`
|
||||
Expected: 测试通过,接口与健康检查可用
|
||||
|
||||
**Step 3: 修正最小必要问题**
|
||||
|
||||
- 若路径、依赖或导入失败,仅做最小修复
|
||||
|
||||
**Step 4: 记录目录用途**
|
||||
|
||||
- 在 `lsfx-mock-server/README.md` 补充与主项目集成的启动说明
|
||||
|
||||
### Task 2: 编写后端与 mock 的 Docker 文件
|
||||
|
||||
**Files:**
|
||||
- Create: `docker/backend/Dockerfile`
|
||||
- Create: `docker/mock/Dockerfile`
|
||||
- Modify: `lsfx-mock-server/README.md`
|
||||
|
||||
**Step 1: 创建后端镜像定义**
|
||||
|
||||
- 使用 Java 21 运行时镜像
|
||||
- 工作目录统一为 `/app`
|
||||
- 复制 `backend/ruoyi-admin.jar`
|
||||
- 默认入口使用 `java -jar /app/ruoyi-admin.jar`
|
||||
|
||||
**Step 2: 创建 mock 镜像定义**
|
||||
|
||||
- 使用 `python:3.11-slim`
|
||||
- 安装 `lsfx-mock-server/requirements.txt`
|
||||
- 启动 `python main.py`
|
||||
|
||||
**Step 3: 本地验证镜像定义**
|
||||
|
||||
Run: `docker build -f docker/mock/Dockerfile -t ccdi-lsfx-mock:test .`
|
||||
Expected: 构建成功
|
||||
|
||||
### Task 3: 编写 Compose 编排
|
||||
|
||||
**Files:**
|
||||
- Create: `docker-compose.yml`
|
||||
- Create: `.env.example`
|
||||
|
||||
**Step 1: 定义 `backend` 服务**
|
||||
|
||||
- 端口映射 `62318:8080`
|
||||
- 环境变量包含 `SPRING_PROFILES_ACTIVE=local` 与 `RUOYI_PROFILE=/app/data/ruoyi`
|
||||
- 卷挂载运行目录与日志目录
|
||||
|
||||
**Step 2: 定义 `lsfx-mock-server` 服务**
|
||||
|
||||
- 使用 `network_mode: "service:backend"`
|
||||
- 依赖 `backend`
|
||||
- 不额外对外暴露端口
|
||||
|
||||
**Step 3: 做配置校验**
|
||||
|
||||
Run: `docker compose config`
|
||||
Expected: Compose 文件能正常展开且无语法错误
|
||||
|
||||
### Task 4: 编写后端打包与远端部署脚本
|
||||
|
||||
**Files:**
|
||||
- Create: `deploy/deploy.ps1`
|
||||
- Create: `deploy/remote-deploy.py`
|
||||
|
||||
**Step 1: 编写本地打包流程**
|
||||
|
||||
- 执行 Maven 打包
|
||||
- 收集 `ruoyi-admin.jar`
|
||||
- 检查 `lsfx-mock-server` 运行文件完整性
|
||||
|
||||
**Step 2: 编写上传脚本**
|
||||
|
||||
- 使用 Paramiko 建立 SSH 与 SFTP 连接
|
||||
- 创建远端目录 `/volume1/webapp/ccdi`
|
||||
- 上传 Compose、Dockerfile、后端 JAR、mock 目录
|
||||
|
||||
**Step 3: 编写远端启动命令**
|
||||
|
||||
- 兼容 `docker compose` 与 `docker-compose`
|
||||
- 执行 `up -d --build`
|
||||
- 返回容器状态与后端日志摘要
|
||||
|
||||
### Task 5: 构建与联调验证
|
||||
|
||||
**Files:**
|
||||
- Modify: `docs/plans/2026-03-13-ccdi-docker-deployment-design.md`
|
||||
|
||||
**Step 1: 本地构建后端**
|
||||
|
||||
Run: `mvn clean package -DskipTests`
|
||||
Expected: `ruoyi-admin/target/ruoyi-admin.jar` 生成成功
|
||||
|
||||
**Step 2: 本地跑通 Compose 校验**
|
||||
|
||||
Run: `docker compose config`
|
||||
Expected: 无错误
|
||||
|
||||
**Step 3: 远端部署验证**
|
||||
|
||||
- 验证 `backend` 容器启动
|
||||
- 验证 `mock server` 在后端网络命名空间内可访问
|
||||
- 验证 `http://116.62.17.81:62318/swagger-ui/index.html`
|
||||
|
||||
**Step 4: 提交**
|
||||
|
||||
```bash
|
||||
git add lsfx-mock-server docker docker-compose.yml .env.example deploy docs/plans/2026-03-13-ccdi-docker-deployment-*.md
|
||||
git commit -m "新增Docker后端部署方案"
|
||||
```
|
||||
Reference in New Issue
Block a user