Java on Kubernetes

  1. Containerizing Java Applications
    1. Creating Dockerfiles for Java
      1. Dockerfile Structure and Best Practices
        1. Choosing Base Images
          1. Standard JDK Images
            1. OpenJDK Variants
              1. Oracle JDK Images
                1. Eclipse Temurin
                2. Alpine Linux-based Images
                  1. Benefits and Drawbacks
                    1. musl vs glibc Considerations
                    2. Distroless Images
                      1. Security Benefits
                        1. Debugging Challenges
                        2. Custom Base Images
                        3. Structuring Dockerfile Layers
                          1. Layer Caching Strategies
                            1. Minimizing Layer Count
                              1. Copying Application Artifacts
                                1. Dependency Management
                                2. Dockerfile Instructions
                                  1. FROM and Multi-stage Builds
                                    1. COPY vs ADD
                                      1. RUN Optimization
                                        1. WORKDIR Best Practices
                                          1. USER Security Considerations
                                            1. ENTRYPOINT vs CMD
                                              1. Use Cases and Differences
                                                1. Overriding at Runtime
                                                  1. Signal Handling
                                                2. Environment Configuration
                                                  1. Environment Variables
                                                    1. Configuration File Management
                                                      1. Secrets Handling in Build
                                                    2. Building Container Images
                                                      1. Docker Build Process
                                                        1. Build Context Management
                                                          1. Build Arguments
                                                            1. Build Cache Optimization
                                                              1. Multi-platform Builds
                                                              2. Maven Integration
                                                                1. Maven Docker Plugins
                                                                  1. Jib Plugin
                                                                    1. Configuration and Usage
                                                                      1. Layered Images
                                                                        1. Registry Authentication
                                                                        2. Spring Boot Maven Plugin
                                                                          1. Build Image Goal
                                                                            1. Layered JAR Support
                                                                          2. Gradle Integration
                                                                            1. Gradle Docker Plugins
                                                                              1. Jib Gradle Plugin
                                                                                1. Spring Boot Gradle Plugin
                                                                                2. Cloud Native Buildpacks
                                                                                  1. Buildpack Concepts
                                                                                    1. Pack CLI Usage
                                                                                      1. Buildpack Workflow
                                                                                        1. Customizing Buildpacks
                                                                                          1. Builder Images
                                                                                          2. Alternative Build Tools
                                                                                            1. Kaniko
                                                                                              1. BuildKit
                                                                                                1. Podman
                                                                                              2. Image Optimization Techniques
                                                                                                1. Multi-stage Builds
                                                                                                  1. Build Stage Separation
                                                                                                    1. Reducing Final Image Size
                                                                                                      1. Artifact Copying Strategies
                                                                                                      2. Image Size Reduction
                                                                                                        1. Removing Unnecessary Files
                                                                                                          1. Using Minimal Base Images
                                                                                                            1. Layer Deduplication
                                                                                                              1. Dependency Pruning
                                                                                                              2. Application Class Data Sharing
                                                                                                                1. Generating Shared Archives
                                                                                                                  1. Configuring JVM for AppCDS
                                                                                                                    1. Performance Benefits
                                                                                                                    2. JVM Optimization for Containers
                                                                                                                      1. Container-aware JVM Settings
                                                                                                                        1. Memory Configuration
                                                                                                                          1. CPU Configuration
                                                                                                                          2. Security Hardening
                                                                                                                            1. Non-root User Configuration
                                                                                                                              1. File System Permissions
                                                                                                                                1. Removing Package Managers
                                                                                                                                  1. Vulnerability Scanning