Jib – Containerize Your Java Application

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.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <? 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
1 | mvn compile jib:build |
Now, pull the image which we created with the above command to run it.
1 2 | 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.
Published on Java Code Geeks with permission by Siva Janapati, partner at our JCG program. See the original article here: Jib – Containerize Your Java Application Opinions expressed by Java Code Geeks contributors are their own. |