Container Build Tiles

Deprecation and Retirement
  • NGSS Maven Tiles 1.x is deprecated as of 8/21/2025 and will no longer be maintained after that point.

  • java-service-base is deprecated as of 8/19/2025, so therefore the 1.x tiles that include it as the default base image (docker-maven-plugin-tile and jib-maven-plugin-tile) will likewise be deprecated.

  • After 6 months of being deprecated, these components will be officially retired from support.

Recommended actions for container tiles (docker-maven-plugin-tile and jib-maven-plugin-tile)

We recommend updating to the new "baseless" tiles introduced in version 1.9.0 - docker-maven-plugin-baseless-tile and jib-maven-plugin-baseless-tile, which do not rely on java-service-base and instead allow you to specify the base image directly in the project pom.xml.

This alleviates a common complaint with maintaining the ngss-maven-tiles version, since it was not readily apparent which version of Tiles corresponded to which version of the standard MAP base/ image, leading to confusion and having to dig unnecessarily for this info.

Recommended actions for all other tiles

Continue to use the most recent releases of 1.x and, if your project requires further customization of Maven configs that are included with these tiles, override applicable configuration(s) in your project’s pom.xml build/plugins field.

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.2)

  • 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.2)

  • buildnumber: Build timestamp for image tagging

Container Configuration
  • Base image: ckm/java-service-base:4.3.2

  • 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-mcp-tile

Custom Jib configuration for building standard Spring AI-based MCP server applications.

Build Profiles
  • jenkins-sandbox: Sandbox environment deployment

  • Build number tagging for different environments

Dependencies
  • base-service-tile: Core service properties

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.runImage property

  • 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-tile for 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/nginx as 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