Build And Deploy Java Application With Docker | Step-By-Step Tutorial
Last Updated :
08 Apr, 2024
Docker is an OS-level virtualization that helps to build and deploy any program. Docker is used to utilize the resources, and it is compatible with all operating systems.
What Is Docker Container?
The Docker container is the part of Docker that provides a lightweight isolation environment for running applications. It is used because it takes fewer resources and helps to build, test, and deploy the application in a very small and easy way.
Prerequisite
- The docker should be installed and in running condition.
- We should have a proper Java application that we have to deploy.
- Java should be installed on your system.
Step-By-Step Process To Building Java application
- Java code: I have a simple Java application that will print "Hello World" on the screen. We can create your Java project.
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
public class HelloWorld {
public static void main(String[] args) throws IOException {
// Create a new HTTP server listening on port 8001
HttpServer server = HttpServer.create(new InetSocketAddress(8001), 0);
// Create a context for handling requests
server.createContext("/", new HttpHandler() {
@Override
public void handle(HttpExchange exchange) throws IOException {
// Set the response headers
exchange.getResponseHeaders().set("Content-Type", "text/html");
exchange.sendResponseHeaders(200, 0);
// Get the response body stream
OutputStream responseBody = exchange.getResponseBody();
// Write the HTML content to the response body
String htmlResponse = "<html><body><h1>Hello, World!</h1></body></html>";
responseBody.write(htmlResponse.getBytes());
// Close the response body stream
responseBody.close();
}
});
// Start the server
server.start();
// Output a message indicating the server has started
System.out.println("Server is listening on port 8001...");
}
}
Now, Before deploying this application with the Docker we have to build it with the help of Dockerfile.
Dockerfile For Java Application | Step-By- Step Guide
It is a file where we writes all the process of building and accessing the application. In this file we use "YML" language which is a easy to learn and also called human language.
Step 1: Write the Dockerfile For Java Application.
Following is the Dockerfile for this application, the process will be same for all your java applications.
# Use a specific version of OpenJDK
FROM openjdk:11
# Set the working directory
WORKDIR /javaapp
# Copy only the necessary source files
COPY HelloWorld.java .
# Compile the Java program
RUN javac HelloWorld.java
# Set the default command to run the Java program
CMD ["java", "HelloWorld"]
- FROM: This command is use to specify the version of the language which help to run the application.
- WORKDIR: This command is use to specify a directory where the all process will happen.
- COPY: This is use to copy the files and resources from your local system to docker container.
- RUN: This is use to run any command , it can be language command, or linux command or anything which helps do download the dependencies, building the application, compilation etc.
Step 2: Build The Docker image by using dockerfile.
Now, After creating the Dockerfile we have to use Docker for building the image and container for deployment.
- Docker file should be present in the main folder of your project.
- First we have to build the docker image
docker build -t "any name for your docker image" .
docker build -t helloworld

Step 3: List all the Docker images.
- For listing the all docker images
Docker images

Steps To Deplo The Java Application
After building the Docker image, now we are ready to deploy the application with Docker.For deployment we have to create the Docker container.
Step 1: Run The Docker container using Docker image.
- To create the docker container from the docker images.
docker run -p "port" -d "your image name"
docker run -p 8001:8001 -d helloworld

Step 2: List all the containers in docker.
- To list all the running containers.
docker ps

Now, We can access the java application with the help of localhost:port that you have given while creating the docker container.
Open browser and type
127.0.0.1:8001

Conclusion
We can build and deploy any application with Docker. Docker is a very optimized way to build a application and deploy on the server. In the Docker the important thing to learn is how the application will Compile and creating Dockerfile. Docker is very efficient way to deploy a application because it takes less resources.
Similar Reads
Containerizing Applications with Docker Compose: Step-by-Step Tutorial
In the present quickly developing scene of software development and deployment, containerization has arisen as a unique advantage. It offers a solution for the perpetual test of ensuring consistency in software conditions across different phases of the development lifecycle and different sending tar
7 min read
Building and Managing .NET Applications with Docker Compose
Modern software development involves putting together applications from a variety of services that have to collaborate. For .NET developers, this can be really complex if everything is done in the development environment. Docker Compose provides an easy way for developers to define and manage multi-
5 min read
How to Deploy a Go Web Application with Docker?
Pre-requisite: Docker A popular containerization tool called Docker enables developers to quickly package programs and their environments, enabling shorter iteration times and greater resource efficiency while delivering the same intended environment each time. A container orchestration tool called
3 min read
How To Build And Deploy Spring Boot Application In Tomcat For DevOps ?
Spring Boot is a famous Java framework for building stand-alone applications. Now if we are going to build web applications using Spring Boot then it may not be useful to build stand-alone applications as we need to deploy the application on the web. Spring Boot by default packages the application i
9 min read
Dockerize Spring Boot Application With PostgresSQL
In recent years, Docker has revolutionized the way in which we deploy and manage applications, offering a lightweight and productive solution for packaging software and its conditions into containers. For developers working with Spring Boot, a well known Java system for building undertaking grade ap
8 min read
Java Application Deployment In Kubernetes With Jenkins CI/CD Pipeline
In modern software development, deploying applications to Kubernetes clusters has become a common practice due to their scalability and reliability. Automating this deployment process using continuous integration and continuous deployment (CI/CD) pipelines with Jenkins streamlines the development wo
5 min read
Dockerize Spring Boot Application with MySQL
Spring boot is the most modern framework used for building microservice-based applications today. Deploying spring boot applications requires multiple steps which require complex infrastructure and tools. Docker helps with the easy deployment of spring boot applications with the help of containers.
4 min read
How To Build Java Application In Jenkins ?
In the software development lifecycle, building and testing applications are basic steps toward ensure code quality and dependability. Jenkins, an open-source automation server, plays a vital role in automating these cycles, especially for Java applications. Java, being one of the most generally uti
7 min read
How to Deploy Java Application in Kubernetes?
Kubernetes is a platform for automating deployment, scaling, and management of containerized applications. Pods are basic units that hold one or more containers. Deployments manage application deployment and updates. Services provide stable endpoints for accessing pods. Ingress manages external acce
9 min read
How to Deploy Spring Boot Application in Kubernetes ?
The Spring Boot framework provides an assortment of pre-configured templates and tools to make the development of Java-based applications simpler. With little configuration, it enables developers to quickly design production-ready, stand-alone apps. Kubernetes, commonly referred to as K8s, is an ope
7 min read