# 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后端部署方案" ```