mcpField
C
container-native-deployment

container-native-deployment

github.com/rrezartprebreza云与 DevOps32843 次安装6 天前更新
代码仓库

关于 container-native-deployment

面向 Spring Boot 服务的部署 Skill,依据启动、内存、吞吐量和构建约束比较 JVM 与原生镜像。内容涵盖容器镜像构建、运行配置、原生镜像测试及供应链检查。

主要功能

  1. 01比较 JVM 与原生部署约束
  2. 02使用 Buildpacks 构建分层镜像
  3. 03配置探针与容器资源限制
  4. 04添加精确的 GraalVM RuntimeHints
  5. 05检查 SBOM 与镜像安全

适用场景

  1. 01通过基准测试选择部署模式
  2. 02准备可复现的 Spring Boot 镜像发布
  3. 03仅在运行时注入密钥以加固容器
  4. 04在 JVM 测试之外验证原生构建

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rrezartprebreza/spring-boot-skills --skill container-native-deployment

安装后在 Claude Code 中输入/container-native-deployment确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
examples/
bad-dockerfile
good-dockerfile

详细介绍

容器与原生部署

根据实测的启动时间、内存、吞吐量和构建约束,选择 JVM 或原生模式。

容器镜像

  • 对于标准服务,优先使用 Spring Boot 的 build-image 任务和 Cloud Native Buildpacks。
  • 将依赖层与应用层分开,以最大限度地复用缓存。
  • 在可复现的发布流水线中固定构建器和运行镜像系列。
  • 在应用允许的情况下,以非 root 用户身份运行,并使用只读文件系统。
  • 在运行时提供密钥;切勿将凭据或环境文件打包进镜像。
  • 配置优雅关闭,并使平台的终止宽限期与应用超时时间保持一致。

运行时行为

  • 设置内存和 CPU 限制,然后验证 JVM 在这些限制下的运行时调优情况。
  • 通过 Actuator 提供专用的就绪和存活探针。
  • 对于初始化缓慢的情况,使用启动探针,而不是放宽存活探针。
  • 仅在明确指定的可写位置写入临时文件。

原生镜像

  • 使用 Spring AOT 和受支持的 GraalVM 原生构建工具。
  • 对分析无法推断的反射、资源、序列化或代理,添加 RuntimeHints。
  • 避免运行时 Bean 结构变更及其他违反封闭世界假设的操作。
  • 运行原生集成测试;JVM 测试套件通过并不足够。

供应链

  • 生成 SBOM,扫描最终镜像,并定期修补构建器和运行镜像。
  • 在环境间晋级时使用不可变的镜像摘要。

示例

  • 请参阅 examples/good-dockerfile 和 examples/bad-dockerfile。

良好示例面向 Boot 3.3+,并在构建器阶段使用 jarmode=tools 提取内容。对于 Boot 3.0-3.2,请使用较旧的 -Djarmode=layertools ... extract 命令。普通的 Maven 打包不会自行创建 target/dependencies/ 或 target/application/ 目录。

官方资料

常见问题

  • Agent 将一个大型 JAR 复制到可变的 root 容器中——请使用分层结构和非 root 运行时。
  • Agent 将密钥打包进镜像层——仅在运行时注入密钥。
  • Agent 为通过原生构建而添加宽泛的反射配置——请注册范围精确的运行时提示。
  • Agent 使用存活探针测试每个依赖——对于会影响流量的依赖,请使用就绪探针。
  • Agent 未测量吞吐量和构建成本就选择原生模式——请对两种部署模式进行基准测试。
  • Agent 复制不存在的 target/dependencies 目录——请在构建器阶段提取已打包的 JAR。
  • Agent 在 Boot 3.0-3.2 上使用 jarmode=tools——在项目升级到 Boot 3.3 之前,请使用 layertools。

评论

支持 Markdown