Agent-skills-standard spring-boot-deployment

Deploy Spring Boot apps with Docker, GraalVM native images, and graceful shutdown. Use when deploying Spring Boot apps as GraalVM native images, containers, or configuring shutdown. (triggers: Dockerfile, compose.yml, docker-layer, native-image, graceful-shutdown)

install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/spring-boot/spring-boot-deployment" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-spring-boot-deployment && rm -rf "$T"
manifest: skills/spring-boot/spring-boot-deployment/SKILL.md
source content

Spring Boot Deployment Standards

Priority: P0

Containerize with Docker

  • Buildpacks: Use
    bootBuildImage
    (Gradle) or
    spring-boot:build-image
    (Maven) for OCI-compliant images.
  • Layered JAR: Use
    Layered JAR
    support to optimize Build Cache. Use multi-stage
    Dockerfile
    .
  • Security: Run as
    non-root
    user. Use
    eclipse-temurin
    or Distroless as base image.
  • Secrets: NEVER commit secrets to Git. Inject via environment variables, Kubernetes Secrets, or Vault (spring.config.import). Never bake secrets into image layers.

See implementation examples for multi-stage layered Dockerfile and graceful shutdown configuration.

Build GraalVM Native Images (AOT)

  • Use Case: Serverless or CLI tools requiring instant startup and low memory footprint.
  • Constraints: Use
    AOT
    transformations. Register reflection with
    RuntimeHints
    if needed.
  • Health Checks: Include
    Actuator
    endpoints specifically for Liveness and Readiness probes.

Tune Resources and Shutdown

  • Graceful Shutdown: Enable
    server.shutdown=graceful
    with 30s timeout.
  • Memory: Use
    -XX:+UseContainerSupport
    and
    -XX:MaxRAMPercentage=75.0
    .
  • Log Management: Log to
    stdout
    in Structured JSON for log aggregators.

Anti-Patterns

  • No Fat JARs in Docker: Use Layered JAR support for better caching.
  • No root container user: Run as restricted user (appuser/nobody).
  • No baked-in secrets: Use Env vars or ConfigMaps, never image layers.

References