How to Dockerize a spring boot application with maven

Docker is an open-source containerization platform used for building, running, and managing applications in an isolated environment. A container is isolated from another and bundles its software, libraries, and configuration files. In this article, we will discuss how to dockerize a Spring Boot application for deployment purposes.
Prerequisites: Before continuing any further, please ensure that node and docker are installed on your machine. If required, visit the Java Installation Guide or the Docker Installation Guide.
Setting up a spring boot application
Step 1: Create a skeleton application using https://start.spring.io.
Step 2: Now create a maven project with the following configuration. After entering all the details, click on the ‘GENERATE’ button to download the project.
Step 3: Extract the zipped file and open it in an IDE of your choice.
Step 4: Open the base java file of the project and add a new controller to the base class of the application.
@RequestMapping("/")
public String home() {
    return "Dockerizing Spring Boot Application";
}
Step 5: Now, add the RestController annotation and import the required packages. In the end, your Application.java file should look like this.
Java
package com.docker.spring;  import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;  @SpringBootApplication@RestControllerpublic class Application {      @RequestMapping("/")    public String home() {        return "Dockerizing Spring Boot Application";    }      public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }  } | 
Step 6: Now start the application by running the following
$ ./mvnw spring-boot:run
Step 7: Navigate to http://localhost:8080 to test the application
Project Structure: This is how the project structure should look at this point:
Dockerizing our application
Now create a new jar file using maven builder.
$ ./mvnw clean package
At the root of our project create a new Dockerfile.
$ touch Dockerfile
Paste the following into the Dockerfile
# Fetching latest version of Java FROM openjdk:18 # Setting up work directory WORKDIR /app # Copy the jar file into our app COPY ./target/spring-0.0.1-SNAPSHOT.jar /app # Exposing port 8080 EXPOSE 8080 # Starting the application CMD ["java", "-jar", "spring-0.0.1-SNAPSHOT.jar"]
Now create a docker image by using the docker build command
$ docker build -t [name:tag] .
- -t: Name and tag for the image
 - . : The context for the build process
 
Once the build process has been completed, you will receive the id and tag of your new image.
Create a docker container by running
$ docker run -d -p [host_port]:[container_port] –name [container_name] [image_id/image_tag]
- -d: Run the container while printing the container ID.
 - -p: Mapping port for our container
 - –name: Assign a name to the container
 
Verify whether the container has been created successfully by running
$ docker container ps
Project Structure: This is how the project structure should look at this point.
Navigate to http://localhost:8080/ in your browser to view the spring boot application.
Note: Please refer to the Dockerfile used in this tutorial if you are having any difficulties following the above steps.
				
					


