Container Build Tiles
|
Deprecation and Retirement
Recommended actions for container tiles ( We recommend updating to the new "baseless" tiles introduced in version This alleviates a common complaint with maintaining the See Migrating to Baseless Image Tiles for more info. Recommended actions for all other tiles Continue to use the most recent releases of |
This page documents tiles that provide containerization support for NGSS projects using Docker, Jib, and Buildpacks technologies.
Docker Maven Plugin Tiles
docker-maven-plugin-tile
Provides comprehensive Docker container build configuration using the fabric8 Docker Maven Plugin.
- Purpose
-
Complete Docker build solution for Java services with standardized NGSS configurations and base image integration.
- Features
-
-
Complete Docker build configuration using fabric8 plugin
-
Predefined base image (
ckm/java-service-base:4.3.5) -
Automatic dependency copying and JAR assembly
-
Container image tagging and versioning
-
Registry push and pull capabilities
-
Health check configuration
-
Multi-environment support (local, jenkins)
-
- Key Properties
-
-
docker.repo.url: Registry URL (default:dtr.mapsandbox.net) -
docker.base.image.name: Base image name (ckm/java-service-base) -
java-service-base.version: Version of base image (4.3.5) -
buildnumber: Build timestamp for image tagging
-
- Container Configuration
-
-
Base image:
ckm/java-service-base:4.3.5 -
Service jar and dependencies copied to
/opt/vamf/service/lib -
Environment variables for service name, version, and tracing
-
Health check via HTTP endpoint
-
Container user and permissions handling
-
- Build Phases
-
-
package: Builds Docker image
-
deploy: Pushes image to registry
-
clean: Removes local images
-
- Profile Support
-
-
jenkins: Specialized build for CI/CD with build number tagging
-
Multiple push strategies for different environments
-
- Usage
-
-
Suitable for Java services requiring Docker containerization
-
Provides zero-configuration Docker builds with NGSS standards
-
Includes comprehensive dependency management
-
- Dependencies
-
-
parse-version-tile: For semantic versioning -
spring-properties-tile: For Spring Boot integration
-
Jib Maven Plugin Tiles
Google Jib provides efficient container builds without requiring Docker runtime or Dockerfiles.
jib-maven-plugin-tile
Provides efficient container build configuration using Google Jib for Java services.
- Purpose
-
Modern containerization solution that builds optimized images without Docker daemon requirement.
- Features
-
-
Efficient container builds without Docker daemon
-
Optimized layer caching for faster builds
-
Direct registry pushes without local image storage
-
Integration with NGSS container conventions
-
Multi-environment deployment profiles
-
Container user configuration (
vauser) -
Spring Boot application integration
-
- Key Configuration
-
-
Container user:
vauser -
Spring Boot arguments:
--spring.config.name=common,application -
Service environment variables for naming and versioning
-
Service base path configuration
-
- Build Profiles
-
-
jenkins-sqa/prod: Production deployment profile
-
jenkins-sandbox: Sandbox environment deployment
-
Build number tagging for different environments
-
- Benefits over Docker
-
-
No Docker daemon required
-
Faster incremental builds through layer caching
-
Better integration with Maven build lifecycle
-
Optimized Java container images
-
More efficient CI/CD pipeline execution
-
- Usage
-
-
Recommended for Java services due to build efficiency
-
Ideal for containerized microservices
-
Perfect for CI/CD environments without Docker
-
- Dependencies
-
-
base-service-tile: Core service properties -
parse-version-tile: Version handling -
spring-properties-tile: Spring Boot integration
-
Spring Boot Cloud Native Buildpacks Tiles
Cloud Native Buildpacks provide an alternative containerization approach using the Cloud Native Computing Foundation’s buildpack specification.
buildpacks-java-tile
Provides efficient container builds for Java applications using Spring Boot’s Cloud Native Buildpacks integration.
- Purpose
-
Modern containerization solution using buildpacks that creates optimized container images without requiring Dockerfiles.
- Features
-
-
Cloud Native Buildpacks integration via Spring Boot Maven plugin
-
Efficient container builds with automatic dependency layer optimization
-
Multi-architecture support (AMD64, ARM64) with manifest creation
-
JaCoCo agent binding for test coverage in containerized environments
-
Platform bindings for certificate embedding and configuration
-
Direct registry publishing capabilities
-
- Key Configuration
-
-
Builder:
paketobuildpacks/builder-jammy-java-tiny:0.0.52 -
Base image: Configurable via
spring-boot.build-image.runImageproperty -
JaCoCo agent binding for test coverage collection
-
Certificate embedding with
BP_EMBED_CERTS=true
-
- Build Profiles
-
-
build-multiarch: Creates both AMD64 and ARM64 container images
-
Docker manifest creation for multi-platform deployment
-
Automatic registry publishing for production builds
-
- Container Bindings
-
-
JaCoCo agent binding:
/workspace/BOOT-INF/lib/org.jacoco.agent-0.8.12-runtime.jar -
Platform bindings:
/platform/bindings/for configuration injection -
Certificate embedding for secure environments
-
- Benefits over Traditional Docker
-
-
No Dockerfile maintenance required
-
Automatic dependency layer optimization
-
Better security through minimal base images
-
Consistent, reproducible builds
-
Superior caching for faster incremental builds
-
- Usage
-
-
Ideal for Spring Boot applications
-
Recommended for cloud-native deployments
-
Perfect for CI/CD pipelines requiring multi-architecture support
-
Excellent choice for Kubernetes environments
-
- Dependencies
-
-
base-service-tile: Core service properties -
parse-version-tile: Version handling -
spring-properties-tile: Spring Boot integration
-
- Skaffold Integration
-
-
Works seamlessly with
skaffold-tilefor development workflows -
Environment-based image configuration via
${env.IMAGE} -
Publishing control via
${env.PUBLISH}environment variable -
Integrates with Skaffold’s build and deployment lifecycle
-
Web Application Container Tile
web-docker-tile
Specialized container configuration for web applications and static content using nginx.
- Purpose
-
Provides Docker containerization for web applications, single-page applications (SPAs), and static content sites.
- Features
-
-
nginx-based web server container
-
Optimized for serving static web content
-
Uses
base/nginxas base image -
Serves content from
/var/www/html -
Web application deployment patterns
-
- Container Configuration
-
-
Base image:
base/nginx -
Content directory:
/var/www/html -
nginx server configuration
-
Static asset optimization
-
- Usage
-
-
Ideal for React, Angular, Vue.js applications
-
Perfect for static websites and documentation
-
Suitable for frontend applications requiring containerization
-
- Use Cases
-
-
Single-page applications (SPAs)
-
Static documentation sites
-
Frontend microservices
-
Web-based dashboards and portals
-
Container Selection Guide
Choose Docker Maven Plugin when: - You need complete control over the container build process - Building traditional Java applications - You want to use standard Docker workflows - Your deployment pipeline is Docker-centric
Choose Jib Maven Plugin when: - Building Java applications - You want faster, more efficient builds - You don’t need custom Dockerfile logic - You want better Maven integration - Your CI/CD environment doesn’t have Docker daemon
Choose Spring Boot Buildpacks when: - Building Spring Boot applications (newest recommended approach) - You want cloud-native, standardized container builds - Multi-architecture deployment is required (ARM64/AMD64) - You prefer buildpack ecosystem and automatic optimizations - You need the latest container security and efficiency features
Choose Web Docker Tile when: - Building web applications or SPAs - Serving static content - Need nginx-based containerization - Frontend applications requiring containerization
Integration Patterns
The container tiles work together with other NGSS tiles:
Common Combinations:
- buildpacks-java-tile + skaffold-tile: Modern cloud-native development workflow
- jib-maven-plugin-tile + skaffold-tile: Efficient Java container development
- docker-maven-plugin-tile + vv-automation-tile: Traditional Docker with V&V automation
- web-docker-tile + backstage-tile: Frontend applications with developer portal integration
Development Workflow: - Local development with Skaffold integration - CI/CD pipeline automation with buildpacks - Multi-architecture container support - Registry management and deployment