
Image Credit: https://github.com/GoogleContainerTools/jib
Building containerized applications require a lot of configurations. If you are building a Java application and planning to use Docker, you might need to consider Jib. Jib is an opensource plugin for Maven and Gradle. It uses the build information to build a Docker image without requiring a Dockerfile and Docker daemon. In this article, we will build a simple Spring Boot application with Jib Maven configuration to see Jib in action. The pom.xml configuration with Jib is given below.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<parent> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-parent</artifactId> | |
<version>2.2.5.RELEASE</version> | |
<relativePath /> | |
<!– lookup parent from repository –> | |
</parent> | |
<groupId>org.smarttechie</groupId> | |
<artifactId>jib-demo</artifactId> | |
<version>0.0.1-SNAPSHOT</version> | |
<name>jib-demo</name> | |
<description>Demo project for Spring Boot</description> | |
<properties> | |
<java.version>1.8</java.version> | |
</properties> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter</artifactId> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-web</artifactId> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-test</artifactId> | |
<scope>test</scope> | |
<exclusions> | |
<exclusion> | |
<groupId>org.junit.vintage</groupId> | |
<artifactId>junit-vintage-engine</artifactId> | |
</exclusion> | |
</exclusions> | |
</dependency> | |
</dependencies> | |
<!– The below configuration is for Jib –> | |
<build> | |
<plugins> | |
<plugin> | |
<groupId>com.google.cloud.tools</groupId> | |
<artifactId>jib-maven-plugin</artifactId> | |
<version>2.1.0</version> | |
<configuration> | |
<to> | |
<!– I configured Docker Image to be pushed to DockerHub –> | |
<image>2013techsmarts/jib-demo</image> | |
</to> | |
<auth> | |
<!– Used simple Auth mechanism to authorize DockerHub Push –> | |
<username>xxxxxxxxx</username> | |
<password>xxxxxxxxx</password> | |
</auth> | |
</configuration> | |
</plugin> | |
</plugins> | |
</build> | |
</project> |
After the above change, use the below Maven command to build the image and push that image to DockerHub. If you face any authentication issues with DockerHub, refer https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#authentication-methods
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mvn compile jib:build |
Now, pull the image which we created with the above command to run it.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
docker image pull 2013techsmarts/jib-demo | |
docker run -p 8080:8080 2013techsmarts/jib-demo |
That’s it. No more additional skill is required to create a Docker Image.
Leave a Reply