SuperAPI AI 工具集

706-technologies-containers-docker

部署与运维

查看项目

更新于 10-15 12:05

技能介绍

用途

该技能面向 Java 项目,提供与框架无关的 Docker 和容器镜像质量指导。其目标是帮助团队构建安全、可复现、可维护的 Docker 容器镜像,同时不将指导内容耦合到 Spring Boot、Quarkus 或 Micronaut 等具体框架。

主要能力

  • Dockerfile 结构:面向 Java 应用的多阶段构建、Maven 依赖缓存、确定性产物复制、jlink 自定义运行时以及 .dockerignore。
  • 运行时镜像选择:Alpaquita 等微型发行版、最小 JRE 镜像、在适当场景固定版本或摘要、镜像标签以及显式入口点。
  • JVM 容器适配:内存百分比参数、启动行为、优雅关闭信号、时区以及可预测的运行时选项。
  • 安全默认值:非 root 用户、最小权限、层中不含密钥、精简包管理器、漏洞扫描、SBOM 意识以及避免特权容器。
  • 运维就绪:在合适时使用健康检查、stdout/stderr 日志、端口声明、镜像体积控制、构建可复现性以及 CI 验证。

使用方式

技能定义了明确的工作流:

  1. 阅读参考并评估容器上下文:阅读 references/706-technologies-containers-docker.md,并在提出变更前检查当前 Dockerfile、.dockerignore、Maven 构建输入、镜像构建脚本、CI 任务、注册表策略和部署约束。
  2. 识别运行时与供应链约束:确认 Java 版本、构建工具、jlink 模块需求、微型发行版兼容性、目标平台、基础镜像策略、注册表要求、漏洞扫描器、SBOM 预期、内存限制、暴露端口以及运维就绪需求。
  3. 应用与容器对齐的变更:按照参考模式和项目约定实现或重构 Docker 与容器构建产物,除非明确要求,否则不涉及框架特定的运行时行为。
  4. 运行验证并报告结果:执行适当的构建、镜像构建、扫描、冒烟测试和生成器检查;总结变更内容、已验证内容以及剩余的容器风险。

技能还包含若干强制约束:在同一变更集中提出 Java 或 Maven 变更前,必须运行 ./mvnw compile 或 mvn compile;在推广变更前运行 ./mvnw clean verify 或 mvn clean verify;绝不将凭据、令牌、私钥、含密钥的 Maven settings 或环境特定密钥烘焙进镜像层、标签、参数或日志;优先非 root 执行、最小权限文件系统权限、微型运行时镜像和显式容器能力;当模块图已知、运行时已验证且与应用依赖兼容时,生产镜像优先使用 jlink 自定义运行时;有意固定基础镜像版本、记录摘要权衡、保持构建输入显式并避免依赖网络的运行时启动步骤;考虑容器内存和 CPU 限制,配置 JVM 参数、优雅关闭行为,并在声称生产就绪前确保启动失败可观测。

适用场景

  • 审查 Java Dockerfile
  • 改进 Docker 镜像安全性
  • 为 Java 容器添加 jlink 运行时
  • 为 Java 项目添加容器化
  • 优化 Java 容器镜像体积
  • 审查 Docker 构建可复现性

限制

  • 范围限定在 Dockerfile、镜像构建和运行时容器层,除非用户明确要求框架特定配置。
  • 框架运行时接线应交给对应的 Spring Boot、Quarkus 或 Micronaut 技能;基于 Testcontainers 的测试应交给相关测试技能。
  • 若目标 Java 版本、构建工具、部署平台、基础镜像策略、注册表策略或安全扫描器缺失且影响建议,需先提出澄清问题再编辑容器产物。
  • 若请求的变更与安全策略、镜像来源、气隙构建或运行时平台约束冲突,需解释权衡并请求确认。
  • 编辑本仓库的 XML 源后,需重新生成技能并验证构建。