SuperAPI AI 工具集

ln-731-docker-generator

部署与运维

查看项目

更新于 10-15 11:52

技能介绍

用途

ln-731-docker-generator 是一个用于生成容器化开发所需 Docker 配置的技能,属于项目引导流程中的 L3 Worker。它的核心目标是为本地开发和生产环境创建 Docker 基础设施文件,帮助开发者快速获得可用的容器化配置。

主要能力

该技能可以生成以下文件:

  • 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。

支持的栈类型包括:

  • 前端:React/Vite + Nginx,要求 package.json 包含 build 脚本和 Vite 或 CRA 配置。
  • 后端 .NET 8/9:要求根目录有 *.sln 文件,以及包含 TargetFramework 的 *.csproj 文件。
  • 后端 Python(FastAPI/Django):要求 requirements.txt 或 pyproject.toml。

使用方式

该技能的工作流程分为四个阶段:

  1. 输入验证:验证来自协调器(ln-730)的配置,检查栈类型是否受支持(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 或 Python 则使用对应变体的全部模板。
  3. 变量替换:将模板中的变量替换为检测到的值,包括 {{NODE_VERSION}}、{{DOTNET_VERSION}}、{{PYTHON_VERSION}}、{{PROJECT_NAME}}、{{DLL_NAME}}、{{FRONTEND_PORT}}、{{BACKEND_PORT}}、{{BACKEND_HOST}}、{{CMD}} 等。
  4. 文件生成:从模板生成文件,检查文件是否已存在(覆盖前警告),应用变量替换,写入适当位置,并尽可能验证语法。文件位置:Dockerfile.frontend -> src/frontend/Dockerfile;Dockerfile.backend -> 项目根目录;docker-compose.yml -> 项目根目录;.dockerignore -> 项目根目录;nginx.conf -> src/frontend/nginx.conf。

输入来源包括:栈类型来自 ln-730 协调器;版本自动检测(Node.js、.NET、Python);项目名称来自目录名;端口使用默认值或检测值(前端 3000,后端 .NET 5000 / Python 8000,数据库 5432)。

适用场景

适用于需要将项目容器化,并希望自动生成 Dockerfile、docker-compose 和 Nginx 配置的开发场景。特别适合作为项目引导流程的一部分,与 ln-730 协调器配合使用。

限制

该技能仅生成配置文件,不执行以下操作:构建镜像、启动容器、管理部署。所有生成均基于 references/ 目录中的模板,不硬编码文件内容。版本检测依赖协调器提供的版本,而非硬编码默认值。文件生成具有幂等性,覆盖前会检查并警告。

安全与性能最佳实践

所有生成的文件遵循以下准则:

  • 非 root 用户:创建并使用 appuser(UID 1001)。
  • 最小镜像:使用 Alpine/slim 变体。
  • 多阶段构建:从运行时排除构建工具。
  • 无密钥:使用环境变量,不硬编码。
  • 健康检查:内置 HEALTHCHECK 指令(wget/curl)。
  • 特定版本:固定基础镜像版本(如 nginx:1.27-alpine)。
  • 非交互模式:ARG DEBIAN_FRONTEND=noninteractive。
  • 层缓存:先复制依赖文件,最后复制源代码。
  • BuildKit 缓存:使用 --mount=type=cache 用于 pip。
  • Python 优化:PYTHONDONTWRITEBYTECODE=1、PYTHONUNBUFFERED=1。

质量标准和完成定义

生成的文件必须满足:docker-compose config 验证无错误;所有基础镜像使用特定版本(非 latest);所有 Dockerfile 配置非 root 用户;所有服务包含健康检查;.dockerignore 排除所有敏感文件;无硬编码密钥或密码。

完成定义:为所有检测到的栈组件(前端/后端)生成 Dockerfile;docker-compose.yml 通过 docker-compose config 验证无错误;.dockerignore 排除敏感文件和构建产物;所有基础镜像使用固定版本(非 latest)。

版本:1.2.0 最后更新:2026-01-21