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