本 Skill 用于分析项目代码结构,生成代码打包和容器化部署所需的完整方案。
目标:全面了解项目结构、技术栈、文档和现有配置
list_dir 查看项目根目录结构
services/、apps/、packages/、src/ 等)
README.md 了解项目概述
DEPLOY.md、deploy.md、部署指南.md
INSTALL.md、install.md、安装说明.md
docs/deploy、docs/install
CONFIG.md、config.md、配置说明.md
.env.example、.env.template
application.yml、application.yaml、application*.properties(Java)
config/ 目录下的配置文件
search_file 查找 */Dockerfile
FROM maven、FROM node、pip install、npm install、mvn build 等构建指令
COPY、ADD 制品、设置运行环境
VOLUME、调试工具、热重载配置
.env*、config.env
.yml、.yaml、.json、.properties、*.conf
config/、conf/、settings/
deploy/analysis-report.md,包含:
目标:创建打包环境,生成可部署的制品
根据项目语言确定打包产物:
| 语言 | 制品类型 | 制品路径示例 |
|------|---------|-------------|
| Java (Maven) | JAR 文件 | target/*.jar |
| Java (Gradle) | JAR 文件 | build/libs/*.jar |
| Node.js (前端) | 静态文件 | dist/、build/ |
| Node.js (后端) | 源码+依赖 | node_modules/ + src/ |
| Python | 源码+依赖 | *.py + requirements.txt |
| Go | 二进制文件 | bin/、* (可执行文件) |
| Rust | 二进制文件 | target/release/* |
| PHP | 源码 | *.php、public/ |
| Ruby | 源码+Gem | .rb、Gemfile |
deploy/Dockerfile.build
python:{version}-slim
node:{version}-alpine
maven:{version}-eclipse-temurin-{jdk}-alpine 或 gradle:{version}-jdk{jdk}-alpine
golang:{version}-alpine
rust:{version}-alpine
deploy/compose.build.yaml
deploy/artifacts/ 目录
```yaml
services:
builder:
build:
context: ..
dockerfile: deploy/Dockerfile.build
volumes:
```
execute_command 运行:docker compose -f deploy/compose.build.yaml up --build
deploy/artifacts/ 目录
deploy/BUILD.md
目标:创建仅用于运行制品的最小化 Dockerfile
核心原则:
deploy/Dockerfile
eclipse-temurin:{jdk}-jre-alpine
node:{version}-alpine
python:{version}-slim
gcr.io/distroless/static:nonroot 或 alpine:latest
nginx:alpine
```dockerfile
RUN addgroup -g 1000 appgroup && adduser -u 1000 -G appgroup -s /bin/sh -D appuser
USER appuser
```
artifacts/ 复制制品
deploy/DEPLOY.md
目标:根据阶段1的分析,准备配置文件模板
application.yml、config.json、.env 等):
deploy/config/ 目录
```
deploy/config/
├── application.yml # 从项目 src/main/resources/ 复制
├── logback.xml # 从项目 src/main/resources/ 复制
└── nginx.conf # 如果是前端项目
```
deploy/.env
```bash
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_NAME=myapp
DB_USER=root
DB_PASSWORD=changeme
# 应用配置
APP_PORT=8080
LOG_LEVEL=info
```
deploy/CONFIG.md
目标:生成完整的部署脚本和编排文件,包含配置文件挂载
deploy/docker-run.sh
docker run 命令
```bash
docker run -d \
--name myapp \
-p 8080:8080 \
-v "$(pwd)/config/application.yml:/app/config/application.yml:ro" \
-v "$(pwd)/config/logback.xml:/app/config/logback.xml:ro" \
--env-file .env \
myapp:latest
```
deploy/compose.yaml
```yaml
services:
app:
build:
context: ..
dockerfile: deploy/Dockerfile
container_name: myapp
ports:
env_file:
volumes:
# 挂载配置文件到容器内指定路径
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
```
deploy/QUICKSTART.md
目标:生成完整的容器化说明文档
deploy/CONTAINERIZATION.md
1. 项目概述
2. 代码打包
3. 容器镜像构建
4. 配置管理
5. 部署指南
6. 目录结构说明
```
deploy/
├── Dockerfile # 部署用 Dockerfile
├── Dockerfile.build # 打包用 Dockerfile
├── compose.yaml # 部署编排
├── compose.build.yaml # 打包编排
├── docker-run.sh # 部署脚本
├── .env # 环境变量
├── artifacts/ # 打包制品
├── config/ # 配置文件目录
│ ├── application.yml # 应用配置
│ └── ...
├── CONTAINERIZATION.md # 本文档
├── QUICKSTART.md # 快速参考
├── BUILD.md # 打包说明
├── DEPLOY.md # 部署说明
├── CONFIG.md # 配置说明
└── analysis-report.md # 分析报告
```
deploy/QUICKSTART.md
```bash
# 1. 代码打包
cd deploy && docker compose -f compose.build.yaml up --build
# 2. 启动服务
docker compose up -d
```
执行本 Skill 后,将在项目目录下创建以下结构:
deploy/
├── Dockerfile # 部署用 Dockerfile(仅制品)
├── Dockerfile.build # 打包用 Dockerfile
├── compose.yaml # 部署编排(含配置挂载)
├── compose.build.yaml # 打包编排
├── docker-run.sh # 部署脚本
├── .env # 环境变量
├── artifacts/ # 打包制品目录
├── config/ # 配置文件目录
│ ├── .env.template
│ └── [项目原有配置文件]
├── CONTAINERIZATION.md # ⭐ 完整容器化说明
├── QUICKSTART.md # 快速参考
├── BUILD.md # 打包说明
├── DEPLOY.md # 部署说明
├── CONFIG.md # 配置说明
└── analysis-report.md # 阶段1分析报告
| 项目类型 | 打包制品 | 部署基础镜像 | 备注 |
|---------|---------|-------------|------|
| Java (Maven/Gradle) | JAR 文件 | eclipse-temurin:{jdk}-jre-alpine | 多阶段构建 |
| Node.js 前端 | dist/ 或 build/ | nginx:alpine | 静态文件服务 |
| Node.js 后端 | node_modules/ + 源码 | node:{version}-alpine | 包含依赖 |
| Python | 源码 + 依赖 | python:{version}-slim | pip 安装依赖 |
| Go | 二进制文件 | gcr.io/distroless/static 或 alpine | 静态编译 |
| Rust | 二进制文件 | debian:slim 或 alpine | 静态链接 |
| PHP | 源码 | php:{version}-apache 或 nginx:alpine | 预装扩展 |
| Ruby | 源码 + Gem | ruby:{version}-slim | bundle 安装 |
DEPLOY.md 和 CONTAINERIZATION.md 中明确说明使用的用户权限
deploy/config/ 目录
CONFIG.md 和 CONTAINERIZATION.md 中详细说明:
共 4 个版本