Example of how to deploy Spring Boot using Docker

Example of how to deploy Spring Boot using Docker

Here we mainly use spring-boot out of the box, which can generate a standalone program, and the maven plug-in docker-maven-plugin

The main steps here

  • Build a simple springboot project
  • Add docker-maven-plugin and write dockerfile
  • Practice generating docker images

A simple Spring Boot project

Take spring boot 2.0 as an example

Add parament dependency in pom.xml file

 <parent>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.0.RELEASE</version>
</parent>

Add web and test dependencies

<dependencies>
   <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>
   </dependency>
 </dependencies>

Create a Controller with an index() method that returns: Hello Docker!

@RestController
public class Controller {
 
  @RequestMapping("/")
  public String index() {
    return "Hello Docker!";
  }
}

Startup Class

@SpringBootApplication
public class Application {
 public static void main(String[] args) {
 SpringApplication.run(Application.class, args);
 }
}

After adding, start the project. After successful startup, open the browser: http://localhost:8080/, and the page returns: Hello Docker!, indicating that the Spring Boot project is configured normally.

Add dcoker-maven-plugin

Add the Docker image prefix to the properties node in pom.xml

<properties>
 <docker.image.prefix>springboot</docker.image.prefix>
</properties>

Add the docker build plugin in plugins

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>1.0.0</version>
        <configuration>
          <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
          <dockerDirectory>src/main/docker</dockerDirectory>
          <resources>
            <resource>
              <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
              <include>${project.build.finalNmae}.jar</include>
            </resource>
          </resources>
        </configuration>
      </plugin>
    </plugins>
  </build>

Writing a Dockerfile

Create a Dockerfile file in the directory src/main/docker. The Dockerfile file is used to explain how to build the image.

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD spring-boot-docker-1.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080

This Dockerfile is very simple. It builds the JDK basic environment and adds the Spring Boot Jar to the image. Here is a brief description:

  • FROM means using the Jdk8 environment as the base image. If the image is not local, it will be downloaded from DockerHub.
  • VOLUME, VOLUME points to a /tmp directory. Since Spring Boot uses the built-in Tomcat container, Tomcat uses /tmp as the working directory by default. The effect of this command is: create a temporary file in the host's /var/lib/docker directory and link it to the /tmp directory in the container
  • ADD, copy the file and rename it
  • ENTRYPOINT, to shorten Tomcat startup time, add the java.security.egd system property to point to /dev/urandom as ENTRYPOINT
  • EXPOSE indicates that port 8080 provides services

Generate docekr image

A Docker environment is required to package the Spring Boot project.

Three dependencies are required

  • jdk environment
  • Maven
  • Docker environment

If there is no error when running java -version,mvn -version,docker version , the environment is ready.

Enter the project directory

mvn package -Dmavne.test.skip=true
java -jar target/spring-boot-docker-1.0.jar

If it can run normally, it means there is no problem with the jar package.

Then build the image

mvn docker:build

If build success is displayed, it is successful.

Use docker images to view the built image

Run the image

docker run -p 8080:8080 -t springboot/spring-boot-docker

Then curl http://127.0.0.1:8080 and you can see Hello Docker! is returned, indicating success

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Notes on deploying SpringBoot projects with IDEA and Dockerfile
  • How to deploy SpringBoot project using Dockerfile
  • Complete steps for Spring Boot to quickly deploy projects using Docker
  • Dockerfile usage in springboot

<<:  How to build a drag and drop plugin using vue custom directives

>>:  Briefly describe the difference between Redis and MySQL

Recommend

Common considerations for building a Hadoop 3.2.0 cluster

One port changes In version 3.2.0, the namenode p...

JavaScript to implement the back to top button

This article shares the specific code for JavaScr...

Examples of some usage tips for META tags in HTML

HTML meta tag HTML meta tags can be used to provi...

Introduction to CSS3 color value RGBA and gradient color usage

Before CSS3, gradient images could only be used a...

A link refresh page and js refresh page usage examples

1. How to use the link: Copy code The code is as f...

A brief discussion on group by in MySQL

Table of contents 1. Introduction 2. Prepare the ...

How to configure two-way certificate verification on nginx proxy server

Generate a certificate chain Use the script to ge...

uni-app WeChat applet authorization login implementation steps

Table of contents 1. Application and configuratio...

How to reduce memory usage and CPU usage of web pages

Some web pages may not look large but may be very...

Linux bash: ./xxx: Unable to execute binary file error

Today I sent a small tool for Ubuntu to a custome...

React ref usage examples

Table of contents What is ref How to use ref Plac...

Simple example of HTML checkbox and radio style beautification

Simple example of HTML checkbox and radio style b...

Detailed tutorial on installing CentOS, JDK and Hadoop on VirtualBox

Table of contents 1. Prerequisites 1.1 Supported ...

How to set list style attributes in CSS (just read this article)

List style properties There are 2 types of lists ...