关于 ln-731-docker-generator
为前端、.NET 和 Python 项目生成 Docker 配置的 Skill。它依据模板和检测到的项目版本创建容器文件,但不构建镜像或管理部署。
主要功能
- 01生成 Dockerfile 和 docker-compose.yml
- 02创建 .dockerignore 与 Nginx 配置
- 03支持前端、.NET 和 Python 技术栈
- 04替换检测到的版本和项目变量
- 05采用非 root 用户、固定镜像版本与健康检查
适用场景
- 01为前端项目添加容器配置
- 02为 .NET 或 Python 后端准备 Docker 文件
- 03生成适用于开发和生产的容器配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-731-docker-generator安装后在 Claude Code 中输入/ln-731-docker-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/templates/docker_compose.templatedockerfile_backend_dotnet.templatedockerfile_backend_python.templatedockerfile_frontend.templatedockerignore.templatenginx.template详细介绍
**路径:**文件路径(
references/、../ln-*)均相对于此技能目录。
ln-731-docker-generator
**类型:**L3 Worker
**类别:**7XX 项目引导
为容器化开发生成可用于生产环境的 Docker 配置。
目的与范围
为本地开发和生产环境创建 Docker 基础设施:
- **执行:**生成 Dockerfile、docker-compose、.dockerignore、nginx 配置
- **不执行:**构建镜像、启动容器、管理部署
输入
| 输入 | 来源 | 描述 |
|---|---|---|
| 技术栈类型 | ln-730 coordinator | frontend、backend-dotnet、backend-python |
| 版本 | 自动检测 | Node.js、.NET、Python 版本 |
| 项目名称 | 目录名称 | 用于容器命名 |
| 端口 | 默认值或检测结果 | 前端:3000,后端:5000/8000,数据库:5432 |
输出
| 文件 | 用途 | 模板 |
|---|---|---|
Dockerfile.frontend | 前端构建与服务 | dockerfile_frontend.template |
Dockerfile.backend | 后端构建与运行 | dockerfile_backend_dotnet.template 或 dockerfile_backend_python.template |
docker-compose.yml | 服务编排 | docker_compose.template |
.dockerignore | 构建上下文排除项 | dockerignore.template |
nginx.conf | 前端代理配置 | nginx.template |
工作流
阶段 1:输入验证
验证从协调器收到的配置:
- 检查技术栈类型是否受支持(frontend、backend-dotnet、backend-python)
- 验证版本是否有效(Node 18+、.NET 8+、Python 3.10+)
- 确认项目目录存在
输出:已验证的配置或错误
阶段 2:模板选择
根据技术栈选择适当的模板:
| 技术栈 | 使用的模板 |
|---|---|
| 仅前端 | dockerfile_frontend、nginx、dockerignore |
| 后端 .NET | dockerfile_backend_dotnet、docker_compose、dockerignore |
| 后端 Python | dockerfile_backend_python、docker_compose、dockerignore |
| 全栈 .NET | 以上所有模板(dotnet 变体) |
| 全栈 Python | 以上所有模板(python 变体) |
阶段 3:变量替换
将模板变量替换为检测到的值:
| 变量 | 来源 | 示例 |
|---|---|---|
{{NODE_VERSION}} | package.json engines 或默认值 | 22 |
{{DOTNET_VERSION}} | *.csproj TargetFramework | 9.0 |
{{PYTHON_VERSION}} | pyproject.toml 或默认值 | 3.12 |
{{PROJECT_NAME}} | 目录名称 | my-app |
{{DLL_NAME}} | *.csproj AssemblyName | MyApp.Api.dll |
{{FRONTEND_PORT}} | 默认值或检测结果 | 3000 |
{{BACKEND_PORT}} | 取决于技术栈 | 5000(.NET)、8000(Python) |
{{BACKEND_HOST}} | 服务名称 | backend |
{{CMD}} | 取决于框架 | ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"](FastAPI)或 ["gunicorn", "--bind", "0.0.0.0:8000", "{{PROJECT_NAME}}.wsgi:application"](Django) |
阶段 4:文件生成
根据模板生成文件:
- 检查文件是否已存在(覆盖前发出警告)
- 应用变量替换
- 将文件写入相应位置
- 尽可能验证语法
文件位置:
Dockerfile.frontend->src/frontend/DockerfileDockerfile.backend-> 项目根目录docker-compose.yml-> 项目根目录.dockerignore-> 项目根目录nginx.conf->src/frontend/nginx.conf
支持的技术栈
前端:React/Vite + Nginx
要求:
- package.json 中包含 build 脚本
- Vite 或 CRA 配置
生成内容:
- 多阶段 Dockerfile(builder + nginx)
- 带有 SPA 路由和 API 代理的 Nginx 配置
后端:.NET 8/9
要求:
- 根目录中有
*.sln文件 *.csproj中包含 TargetFramework
生成内容:
- 多阶段 Dockerfile(SDK 构建 + ASP.NET 运行时)
- 健康检查端点配置
后端:Python(FastAPI/Django)
要求:
- 有 requirements.txt 或 pyproject.toml
生成内容:
- 多阶段 Dockerfile(构建器 + 精简运行时)
- uvicorn(FastAPI)或 gunicorn(Django)入口点
安全与性能最佳实践
所有生成的文件均遵循以下准则:
| 实践 | 实现方式 |
|---|---|
| 非 root 用户 | 创建并使用 appuser(UID 1001) |
| 精简镜像 | Alpine/slim 变体 |
| 多阶段构建 | 不在运行时镜像中包含构建工具 |
| 不包含密钥 | 使用环境变量,而非硬编码 |
| 健康检查 | 内置 HEALTHCHECK 指令(wget/curl) |
| 指定版本 | 固定基础镜像版本(例如 nginx:1.27-alpine) |
| 非交互模式 | ARG DEBIAN_FRONTEND=noninteractive |
| 层缓存 | 先复制依赖文件,最后复制源代码 |
| BuildKit 缓存 | 对 pip 使用 --mount=type=cache |
| Python 优化 | PYTHONDONTWRITEBYTECODE=1、PYTHONUNBUFFERED=1 |
质量标准
生成的文件必须满足:
-
docker-compose config验证无错误 - 所有基础镜像均使用指定版本(而非
latest) - 所有 Dockerfile 均配置了非 root 用户
- 所有服务均配置了健康检查
- .dockerignore 排除所有敏感文件
- 不包含硬编码的密钥或密码
重要说明
- 版本检测:使用协调器检测到的版本,而非硬编码的默认值。
- 幂等性:写入前检查文件是否存在。如需覆盖,发出警告。
- 基于模板:所有生成内容均使用 references/ 中的模板。切勿硬编码文件内容。
- 安全优先:每个生成的文件都必须遵循安全最佳实践。
参考文件
| 文件 | 用途 |
|---|---|
| dockerfile_frontend.template | React/Vite 多阶段 Dockerfile |
| dockerfile_backend_dotnet.template | .NET 多阶段 Dockerfile |
| dockerfile_backend_python.template | Python 多阶段 Dockerfile |
| docker_compose.template | docker-compose.yml 模板 |
| dockerignore.template | .dockerignore 模板 |
| nginx.template | Nginx 配置 |
完成定义
- 为检测到的所有技术栈组件(前端/后端)生成 Dockerfile
- docker-compose.yml 验证无错误(
docker-compose config) - .dockerignore 排除敏感文件和构建产物
- 所有基础镜像均使用固定版本(而非
latest)
版本: 1.2.0 最后更新: 2026-01-21
评论
支持 Markdown