# Dockerize Spring Web Compose Cicd

> 为分离的 Java Spring Boot 后端、静态 Web 前端和独立部署仓生成或改进生产 Docker、GitHub Actions、GHCR 与 Docker Compose 配置。适用于 Spring Boot 与 Vue、React、Angular、Svelte、Astro、Vite 或静态 Next.js 导出项目的容器化、分仓 CI/CD、镜像发布、Compose 编排、自动部署、反向代理或中间件部署任务。

- Skill: `rayekry777/dockerize-spring-web-compose-cicd` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add rayekry777/dockerize-spring-web-compose-cicd`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rayekry777/dockerize-spring-web-compose-cicd/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: Rayekry777 (https://skillmd.com/u/rayekry777)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/rayekry777/dockerize-spring-web-compose-cicd

---


# Spring Web Compose CI/CD

为三仓交付模型生成基于证据的配置：后端仓和前端仓只构建、测试并推送镜像；部署仓保存 Compose、入口代理和部署流程。

## 输入与识别

1. 确认后端、前端和部署仓路径；仅处理当前任务明确授权的仓库。缺少部署仓时，只生成应用仓产物和部署仓初始化清单。
2. 对每个仓库运行：

   ```bash
   python scripts/scan_component_context.py <项目根目录>
   ```

3. 检查扫描器列出的构建文件、锁文件、Spring 配置、已有 Docker/Compose 文件、环境变量示例和本地开发 Compose。不要读取或输出秘密文件内容。
4. 根据任务读取所需规则：组件镜像见 [component-rules.md](references/component-rules.md)，CI/CD 与编排见 [cicd-compose-rules.md](references/cicd-compose-rules.md)，生产运维见 [operations-security.md](references/operations-security.md)。

## 工作流

1. 识别仓库角色、运行时、实际端口、构建产物、已有反向代理约定和本地开发中间件。
2. 为后端或静态前端仓生成/补丁更新 `Dockerfile`、`.dockerignore`、必要的运行配置和 GitHub Actions 工作流；保留已有有效约定。
3. 为部署仓生成/补丁更新镜像引用的 `compose.yaml`、环境示例、入口代理、部署/备份/恢复脚本和部署工作流。应用镜像必须通过 digest 部署。
4. 将本地开发中检测到的数据库、缓存、消息队列或对象存储按实际服务名、镜像版本和持久化需求纳入 Compose。对不确定或冲突的中间件停止并请求确认。
5. 验证构建配置、Dockerfile 路径和 Compose 渲染；工具可用时运行项目测试、镜像构建、Nginx/Caddy 配置检查和健康探测。

## 必须遵守的行为

- 后端使用项目的 Maven/Gradle 包装器、匹配的 Java 工具链、多阶段构建、非 root 用户和 exec 格式 `ENTRYPOINT`。
- 仅在已有 Actuator 探针时使用 Spring 存活/就绪端点。仅在需要时新增 `application-prod.yml`，用环境变量传递配置；不复制或烘焙秘密。
- 前端仅支持产出静态文件的构建。使用实际包管理器、构建脚本和输出目录，使用 Nginx 运行镜像；将 `VITE_*`、`VUE_APP_*` 和同类变量视为公开信息。
- 对 SSR、Nuxt/Next 服务端运行、Node 常驻服务或多个无法区分的应用停止并请求明确的运行时方案。
- PR 只测试、构建和验证镜像。`main` 构建使用最小权限 `GITHUB_TOKEN` 推送 GHCR，并以 GitHub App 向部署仓发送 `repository_dispatch`。
- 部署仓自动更新 staging；production 必须由人工选择已验证 digest 并通过 GitHub Environment 审批。禁止以 `latest` 部署。
- 除入口外，不发布后端、中间件和数据服务端口。应用通过 Compose 服务名连接依赖，绝不使用 `localhost`。
- 不将密码、令牌、私钥、密钥库、实际 `.env` 或生产数据提交到仓库、镜像层或日志。数据库迁移与镜像回滚是独立风险。

## 停止条件

出现多个可运行应用且目标不明确、Java/运行时版本冲突、前端不是静态构建、中间件版本或持久化需求冲突、或修改入口代理会改变既有生产路由时，停止并请求用户指示。

