Skip to main content

Docker

Docker packages your Spring Boot application and its dependencies into a container image that runs identically in development, CI, and production. Understanding how to write efficient multi-stage Dockerfiles, configure Docker Compose for local development, and optimize image size are practical skills expected of every modern Java developer.

What You'll Find Here

Notes are being added. Planned topics:

TopicDescription
Docker FundamentalsImages, containers, layers, registries; docker run, docker build, docker exec.
Dockerfile for Spring BootMulti-stage builds; JRE vs. JDK base images; layer ordering for cache efficiency.
Docker ComposeMulti-container local environments; depends_on, health checks, volume mounts.
Spring Boot Docker IntegrationBuildpacks (./mvnw spring-boot:build-image); layered JARs; DOCKER_BUILDKIT.
Image OptimizationReducing image size; distroless base images; CVE scanning.

Learning Path

  1. Docker Fundamentals — understand images vs. containers and the layer model before writing Dockerfiles.
  2. Dockerfile for Spring Boot — multi-stage builds with a JRE final stage are the current best practice.
  3. Docker Compose — a compose.yml with your app, database, and message broker is the standard dev setup.
  4. Spring Boot Buildpacksspring-boot:build-image generates optimized images without a Dockerfile.
  • Kubernetes — Kubernetes orchestrates Docker containers at scale.
  • Testing — Testcontainers uses Docker to run services in tests.
  • DevOps — CI/CD pipelines build and push Docker images to registries.