使用Docker部署Spring Boot项目

释放双眼,带上耳机,听听看~!

本文使用Docker部署Spring Boot项目。部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven;接着搭建一个Spring Boot项目,使其支持Docker部署;最后进行部署和测试。

环境搭建

安装Docker

检查系统内核版本

Docker运行在CentOS 7上,要求操作系统为64位,内核版本为3.10及以上。
确认本机已经安装了满足要求的Linux内核。使用命令uname -r来检查内核版本信息。


1
2
3
1[root@localhost ~]# uname -r
23.10.0-957.el7.x86_64
3

在CentOS 7中安装Docker

使用命令yum install -y docker安装Docker,“-y”表示不询问,使用默认配置进行安装。

启动Docker服务,并设置为开机自启动

使用下列命令:


1
2
3
1systemctl start docker.service
2systemctl enable docker.service
3

查看版本信息

输入docker version,返回版本信息表明Docker安装成功。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1[root@localhost ~]# docker version
2Client:
3 Version:         1.13.1
4 API version:     1.26
5 Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
6 Go version:      go1.10.3
7 Git commit:      b2f74b2/1.13.1
8 Built:           Wed May  1 14:55:20 2019
9 OS/Arch:         linux/amd64
10
11Server:
12 Version:         1.13.1
13 API version:     1.26 (minimum version 1.12)
14 Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
15 Go version:      go1.10.3
16 Git commit:      b2f74b2/1.13.1
17 Built:           Wed May  1 14:55:20 2019
18 OS/Arch:         linux/amd64
19 Experimental:    false
20

安装Maven和配置阿里云镜像

下载Maven

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

解压和移动


1
2
3
1tar vxf apache-maven-3.5.4-bin.tar.gz
2mv apache-maven-3.5.4 /usr/local/maven3
3

配置环境变量

打开环境变量vim /etc/profile,添加如下内容:


1
2
3
4
1MAVEN_HOME=/usr/local/maven3
2export MAVEN_HOME
3export PATH=${PATH}:${MAVEN_HOME}/bin
4

保存并退出::wq

刷新环境变量的配置使其生效:source /etc/profile

查看版本信息

使用命令mvn -v进行查看


1
2
3
4
5
6
7
1[root@localhost ~]# mvn -v
2Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
3Maven home: /usr/local/maven3
4Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_211/jre
5Default locale: zh_CN, platform encoding: UTF-8
6OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
7

使用mvn package命令进行打包,却报错,提示连接被拒绝。
使用Docker部署Spring Boot项目

解决办法:给Maven配置阿里云镜像
切换到maven安装目录下面,打开settings.xml文件,在<mirrors>标签里面添加:


1
2
3
4
5
6
7
1&lt;mirror&gt;
2    &lt;id&gt;alimaven&lt;/id&gt;
3    &lt;name&gt;aliyun maven&lt;/name&gt;
4    &lt;url&gt;http://maven.aliyun.com/nexus/content/groups/public/&lt;/url&gt;
5    &lt;mirrorOf&gt;central&lt;/mirrorOf&gt;
6&lt;/mirror&gt;
7

Spring Boot项目添加Docker支持

新建Spring Boot工程

新建一个Spring Boot项目,添加一个简单的DockerController,方便进行测试。


1
2
3
4
5
6
7
8
9
10
11
12
1@RestController
2@SpringBootApplication
3@RequestMapping(&quot;/docker&quot;)
4public class DockerController {
5
6    @RequestMapping(&quot;/hello&quot;)
7    @ResponseBody
8    public String hello() {
9        return &quot;Hello Docker&quot;;
10    }
11}
12

添加Docker支持

在 pom.xml中添加Docker镜像名称


1
2
3
4
1&lt;properties&gt;
2    &lt;docker.image.prefix&gt;springboot&lt;/docker.image.prefix&gt;
3&lt;/properties&gt;
4

添加 Docker插件:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1       &lt;!-- docker插件 --&gt;
2        &lt;plugin&gt;
3            &lt;groupId&gt;com.spotify&lt;/groupId&gt;
4            &lt;artifactId&gt;docker-maven-plugin&lt;/artifactId&gt;
5            &lt;version&gt;1.0.0&lt;/version&gt;
6            &lt;configuration&gt;
7                &lt;imageName&gt;${docker.image.prefix}/${project.artifactId}&lt;/imageName&gt;
8                &lt;dockerDirectory&gt;src/main/docker&lt;/dockerDirectory&gt;
9                &lt;resources&gt;
10                    &lt;resource&gt;
11                        &lt;targetPath&gt;/&lt;/targetPath&gt;
12                        &lt;directory&gt;${project.build.directory}&lt;/directory&gt;
13                        &lt;include&gt;${project.build.finalName}.jar&lt;/include&gt;
14                    &lt;/resource&gt;
15                &lt;/resources&gt;
16            &lt;/configuration&gt;
17        &lt;/plugin&gt;
18

编写Dockerfile文件

在目录src/main/docker下创建Dockerfile 文件,Dockerfile 文件用来说明如何来构建镜像。


1
2
3
4
5
1FROM java:8
2VOLUME /tmp
3ADD docker-0.0.1-SNAPSHOT.jar app.jar
4ENTRYPOINT [&quot;java&quot;,&quot;-Djava.security.egd=file:/dev/./urandom&quot;,&quot;-jar&quot;,&quot;/app.jar&quot;]
5

FROM指令指定一个已经存在的镜像,告诉Docker后续的指令都是在这个基础上进行的。例如:FROM java:8表示使用 Jdk1.8 环境为基础镜像进行构建镜像。

VOLUME ,VOLUME 指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

ADD ,拷贝文件并且重命名

ENTRYPOINT,为了缩短Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为ENTRYPOINT。

部署Spring Boot工程

将工程代码 docker 拷贝服务器中,进入项目路径下进行打包测试。

打包:mvn package
运行:java -jar target/spring-boot-docker-1.0.jar

项目启动成功,说明环境配置没有问题,接下来可以使用Dockerfile构建镜像。
使用Docker部署Spring Boot项目

构建Docker镜像mvn package docker:build。可以看到docker镜像构建成功,仔细看日志,会发现四个步骤和Dockerfile中的指令是一一对应的。
使用Docker部署Spring Boot项目

使用docker images命令查看构建好的镜像:


1
2
3
4
1[root@localhost ~]# docker images
2REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
3springboot/docker       latest              39aabeebb971        5 days ago          660 MB
4

运行docker镜像:docker run -p 8080:8080 -t springboot/docker

在本机浏览器进行访问,可以看到返回结果,说明部署成功。
使用Docker部署Spring Boot项目

完整代码:GitHub地址

参考:Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

转载于:https://www.cnblogs.com/sgh1023/p/11079003.html

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++ list, vector, map, set 区别与用法比较

2022-1-11 12:36:11

安全运维

floyd算法

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索