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.
<?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
mvn compile jib:build
Now, pull the image which we created with the above command to run it.
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. |