explaingit

googlecontainertools/jib

14,393JavaAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

Google's tool for packaging Java applications into Docker container images directly from Maven or Gradle builds, with no Docker installation needed on your machine.

Mindmap

mindmap
  root((Jib))
    What it does
      Java to container image
      No Docker required
      Registry push built-in
    How it works
      Maven or Gradle plugin
      Layer splitting
      Reproducible builds
    Benefits
      Fast incremental deploys
      No Dockerfile needed
      Works with any registry
    Formats
      Maven plugin
      Gradle plugin
      Standalone CLI
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build and push a Java application to a container registry from your existing Maven or Gradle build without installing Docker.

USE CASE 2

Speed up CI/CD deployments by having Jib re-upload only the changed code layer while leaving unchanged library layers untouched.

USE CASE 3

Produce reproducible container images where the same source code always produces an identical image, down to the byte.

Tech stack

JavaMavenGradleDockerOCI

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a Maven or Gradle Java project and credentials for a container registry, no Docker daemon needed on your local machine.

In plain English

Jib is an open-source tool from Google that packages Java applications into container images without requiring Docker to be installed or running on the developer's machine. A container image is a standardized bundle that includes your application and everything it needs to run, making it easy to deploy consistently across different computers and cloud environments. Traditionally, packaging a Java application into a container meant writing a special configuration file called a Dockerfile, then using Docker's own command-line tools to build and push the image. Jib removes all of those steps. Instead, it plugs directly into Maven or Gradle, which are the standard build tools that Java developers already use. You run your normal build command and Jib handles creating and uploading the container image automatically. One of Jib's main advantages is speed. A typical approach puts the entire application into a single layer inside the container. Jib instead splits the application into separate layers: one for the external libraries your code depends on, and another for the code you actually wrote. Because libraries change far less often than your own code, only the changed layer needs to be re-uploaded when you redeploy. This can dramatically cut down the time between making a change and having it live. Jib also produces reproducible builds. Given the same source code and dependencies, it will always produce an identical container image, down to the byte. This means you can be confident that rebuilding does not introduce hidden differences. The tool is available as a Maven plugin, a Gradle plugin, a Java library called Jib Core for more customized use cases, and a standalone command-line tool. It works with any container registry that accepts standard Docker or OCI images, which are two widely supported image formats. Google developed it primarily to work well with their own cloud build and deployment services, but it is not limited to the Google ecosystem.

Copy-paste prompts

Prompt 1
How do I add Jib to my Maven pom.xml to build and push a Java Spring Boot app to Docker Hub? Show the minimal plugin configuration needed.
Prompt 2
I'm using Gradle for my Java project. How do I configure Jib to push my app image to Google Container Registry when I run the build?
Prompt 3
How does Jib's layer caching work, and what do I need to configure to ensure only my changed code gets re-uploaded on each build?
Prompt 4
Can I use Jib without pushing to a registry? Show me how to build the container image to a local tar file or the local Docker daemon instead.
Open on GitHub → Explain another repo

← googlecontainertools on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.