SuperAPI AI 工具集

dockerize

部署与运维

查看项目

更新于 10-15 22:11

技能介绍

用途:该技能为当前项目创建面向 haloy 部署的生产级 Dockerfile。当用户提出 dockerize、创建 Dockerfile、容器化应用等请求时使用。它只生成单个 Dockerfile;若涉及 docker-compose、多容器或复杂编排,会提示 haloy 通过自身配置处理编排,多服务应各自拥有 Dockerfile 并在 haloy.yaml 中定义为独立服务。

主要能力:通过检查 package.json(含 @tanstack/react-start、next)、各类锁文件(bun.lockb、pnpm-lock.yaml、package-lock.json、yarn.lock)、requirements.txt、pyproject.toml、Pipfile、uv.lock、poetry.lock、go.mod、Cargo.toml、Gemfile、pom.xml、build.gradle、composer.json 等识别项目类型与包管理器;分析构建流程、依赖、运行时需求、入口命令、环境变量与静态资源;生成多阶段构建、合适基础镜像(优先 Alpine)、合理层顺序、非 root 用户与 HEALTHCHECK 的 Dockerfile;必要时提供 haloy 配置指引。

健康检查:强烈建议 /health 端点,用于零停机部署、自动恢复与部署校验。会先查找 /health、/healthz、/api/health、/_health 等现有端点,缺失时询问用户是否创建,并按框架给出最小实现(TanStack Start、Express/Node、Next.js、FastAPI、Go 等)。最佳实践为快速返回、健康返回 200、响应精简、路径统一。

版本与决策:基础镜像版本优先取项目配置文件(.nvmrc、.node-version、engines.node、.python-version、go.mod、rust-toolchain.toml、.ruby-version 等),其次本地运行时版本,最后回退参考文件;默认用 slim,Alpine 更小但有兼容取舍,始终使用具体 major.minor 标签而非 latest。端口、启动命令、包管理器尽量用默认或推断,仅在关键值缺失时询问。

输出与限制:依次给出完整 Dockerfile、缺失时的 .dockerignore、本地构建测试命令(docker build -t myapp . 与 docker run -p 3000:3000 myapp);若无 haloy.yaml 会建议运行 /haloy-config 或查阅 haloy 文档。.dockerignore 需排除 node_modules、.git、.env、dist、.next、.output、pycache、target 等,并始终包含 haloy.yaml 以提升缓存效率。具体版本号与框架细节需查阅其参考文件,资料未提供完整内容。