使用IDEA,快捷部署SpringBoot应用到Docker

本文档主要介绍,如果把自己编写的SpringBoot应用,使用IDEA,生成镜像,快捷部署到Docker上。

详细步骤如下:

1、开通Docker远程访问,如果已经开通过了,就跳过此步骤

通过SecureCRT(可以使用其它工具)联接到Docker的服务器,并通过root用户登录,执行下面命令修改docker配置文件

vi lib/systemd/system/docker.service
#更改前
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

#更新改,原行通过#号禁用,增加一条新的
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

修改完成之后,重启docker

#重新加载服务的配置文件
systemctl daemon-reload
#重启docker
systemctl restart  docker

重启完成之后,验证是否开通成功。通过浏览器访问以下联接http://服务器IP:2375/version,展示以下内容表示开通成功。

2、使用IDEA,创建一个SpringBoot项目,创建Dockerfile文件,并放入项目中。

使用IDEA创建一个SpringBoot应用,创建一个简单的Controller。代码如下:

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description: hello
 * @Author: LvGang
 * @Date: 2021/10/10 18:54
 * @Version:1.0
 */
@RestController
public class HelloController {

    @GetMapping("/")
    public String hello(){
        return "Hello Spring Boot Docker!";
    }
}

创建一个Dockerfile文件,放到/src/main/docker目录下,Dockerfile文件编写可以查看文档:使用Dockerfile,把SpringBoot应用部署到Docker

FROM openjdk:8-jdk-slim
LABEL maintainer=lvgang

COPY demo-0.0.1-SNAPSHOT.jar  /demo.jar

ENTRYPOINT ["java","-jar","/demo.jar"]

3、修改SpringBoot项目的pom.xml文件

修改项目pom.xml文件,增加以下内容:

在properties标签中增docker镜像前缀定义:

<docker.image.prefix>lvgang</docker.image.prefix>

在plugin标签中增docker-maven-plugin插件配置,详细请看一下文件内容:

<?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.5.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
		<docker.image.prefix>lvgang</docker.image.prefix>
	</properties>
	<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>
	<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.2.2</version>
				<configuration>
					<!-- docker远程地址 -->
					<dockerHost>http://139.198.124.61:2375/</dockerHost>
					<!-- 镜像名,前缀/项目名称 -->
					<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
					<!-- Dockerfile的位置 -->
					<dockerDirectory>src/main/docker</dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

4、按顺序执行,生成Docker镜像

在IDEA中,Maven面版中分行执行clean、package两个命令,最后执行插件中的docker:build命令。

docker:build命令执行时输出以下内容,最后输入BUILD SUCCESS表示执行成功。

执行完成上面几个步骤,可以登录Docker服务器,使用docker images命令查看镜像是否生成成功

5、创建容器,验证镜像

通过SecureCRT(可以使用其它工具)联接到Docker的服务器,并通过root用户登录,执行docker run命令创建容器运行

 docker run -d -p 8080:8080 lvgang/demo

使用浏览器,输入服务器的IP:8080,看是一下是否展示出相应的内容,展示相应内容表示配置成功。

注,在访问时需要服务开通过8080端的访问权限

通过上面5步,我们就把自己编写的SpringBoot应用,通过IDEA,快捷部署到Docker了。


原文:使用IDEA,快捷部署SpringBoot应用到Docker - 阿刚 - OSCHINA - 中文开源技术交流社区
作者: 阿刚ABC