🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Prerequisites
- JDK 17 or later
- Maven or Gradle
- Docker installed on your machine
- IDE (IntelliJ IDEA, Eclipse, etc.)
Step 1: Set Up a Spring Boot Project
Use Spring Initializr to create a new project with the following configuration:
- Project: Maven Project
- Language: Java
- Spring Boot: 3.2.x
- Dependencies: Spring Web
Download and unzip the project, then open it in your IDE.
Example Spring Boot Application
Create a simple Spring Boot application that includes a REST controller.
1.1 Application Class
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
1.2 REST Controller
Create a REST controller class named HelloController in the com.example.demo.controller package.
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Docker!";
}
}
1.3 Maven Configuration
Ensure that your pom.xml is configured correctly. The default configuration provided by Spring Initializr should suffice.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Additional dependencies can be added here -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Step 2: Create a Dockerfile
A Dockerfile is a script that contains instructions to assemble a Docker image.
2.1 Create a Dockerfile
Create a file named Dockerfile in the root directory of your project.
# Use the official OpenJDK base image
FROM openjdk:17-jdk-alpine
# Set the working directory inside the container
WORKDIR /app
# Copy the built jar file into the container
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
# Expose port 8080
EXPOSE 8080
# Run the application
ENTRYPOINT ["java", "-jar", "app.jar"]
Explanation:
FROM openjdk:17-jdk-alpine: Uses the official OpenJDK base image with JDK 17.WORKDIR /app: Sets the working directory inside the container to/app.COPY target/demo-0.0.1-SNAPSHOT.jar app.jar: Copies the built jar file from thetargetdirectory into the container.EXPOSE 8080: Exposes port 8080 to the host.ENTRYPOINT ["java", "-jar", "app.jar"]: Specifies the command to run the application.
Step 3: Build the Spring Boot Application
3.1 Build the Jar File
Run the following command to build the jar file of your Spring Boot application:
./mvnw clean package
This command will generate a jar file in the target directory, for example, target/demo-0.0.1-SNAPSHOT.jar.
Step 4: Build the Docker Image
4.1 Build the Docker Image
Run the following command to build the Docker image:
docker build -t demo-app .
Explanation:
docker build: The Docker command to build an image.-t demo-app: Tags the image with the namedemo-app..: Specifies the current directory as the build context.
Step 5: Run the Docker Container
5.1 Run the Docker Container
Run the following command to start a Docker container from the image:
docker run -p 8080:8080 demo-app
Explanation:
docker run: The Docker command to run a container.-p 8080:8080: Maps port 8080 of the container to port 8080 on the host machine.demo-app: The name of the Docker image to run.
Step 6: Test the Application
6.1 Access the Application
Open a web browser or a tool like Postman and navigate to the following URL:
http://localhost:8080/hello
You should see the message "Hello, Docker!" returned from the HelloController.
Step 7: Additional Docker Commands
7.1 List Docker Images
To list all Docker images on your system, run:
docker images
7.2 List Running Containers
To list all running Docker containers, run:
docker ps
7.3 Stop a Running Container
To stop a running Docker container, run:
docker stop <container_id>
Replace <container_id> with the actual container ID obtained from the docker ps command.
7.4 Remove a Docker Container
To remove a Docker container, run:
docker rm <container_id>
Replace <container_id> with the actual container ID.
7.5 Remove a Docker Image
To remove a Docker image, run:
docker rmi demo-app
Conclusion
In this guide, you have learned how to dockerize a Spring Boot application. We covered:
- Setting up a Spring Boot project.
- Creating a Dockerfile.
- Building the Spring Boot application.
- Building the Docker image.
- Running the Docker container.
- Testing the application.
By following these steps, you can easily package your Spring Boot application into a Docker container, providing a consistent and portable deployment environment.
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment