如何使用Docker发布SpringBoot项目

Posted 程序猿老高

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Docker发布SpringBoot项目相关的知识,希望对你有一定的参考价值。

1、目标

Dockerfile文件用来构建Docker镜像,它由一系列命令和参数构成,接下来演示一下如何使用Docker发布SpringBoot项目。

2、准备

a、SpringBoot项目

该项目名称为demo,并支持SpringMVC+Thymeleaf ;创建index.html首页面,代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>首页</title>
	</head>
	<body>
		HelloWorld
	</body>
</html>
b、生成jar包

通过Maven命令package为demo项目生成jar包,如下所示:

3、镜像

a、Docker环境

视频教程:https://www.bilibili.com/video/BV1xv4y1S7kA

b、上传jar文件

将jar文件上传到指定目录,这里为/opt/docker目录;

c、dockerfile文件

jar文件同级目录下创建dockerfile文件,该文件一般由基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令四部分构成,Dockerfile 中注释使用’#’ ,如下所示:

# 指定当前镜像所基于的基础镜像;如果是第一次打包,则自动下载java 8镜像作为基础镜像,再次制作镜像,则不会再下载java 8镜像
FROM java:8
# 指定维护者信息
MAINTAINER GaoHuanjie
# 指定临时文件目录/tmp,该配置将在主机/var/lib/docker目录下创建临时文件,并链接到容器的/tmp;该配置可选,/tmp目录是Spring Boot内嵌Tomcat容器默认使用的工作目录
VOLUME /tmp 
# 将jar包添加到容器中并更名为app.jar  
ADD demo-0.0.1-SNAPSHOT.jar app.jar 
# 运行jar包
RUN bash -c 'touch /app.jar'
# entrypoint 进入点
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

d、制作镜像

①、进入jar文件目录:

[root@localhost ~]# cd /opt/docker/

②、构建镜像

#-t 指定镜像,语法name[:Tag],:Tag可以省略,此时为latest。注意:最后有个"."!
[root@localhost docker]# docker build -t example:1.0.0 .
Sending build context to Docker daemon  18.08MB
Step 1/6 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
...省略...
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/6 : MAINTAINER GaoHuanjie
 ---> Running in effe02fc49f0
Removing intermediate container effe02fc49f0
 ---> 6555e9a4bc2b
Step 3/6 : VOLUME /tmp
 ---> Running in 457c804affb9
Removing intermediate container 457c804affb9
 ---> 0ab442511f3f
Step 4/6 : ADD demo-0.0.1-SNAPSHOT.jar app.jar
 ---> c0693928296f
Step 5/6 : RUN bash -c 'touch /app.jar'
 ---> Running in c03cd8621bfa
Removing intermediate container c03cd8621bfa
 ---> ebf10840a074
Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
 ---> Running in e61133c98d4a
Removing intermediate container e61133c98d4a
 ---> 4928f88f3445
Successfully built 4928f88f3445
Successfully tagged example:1.0.0
[root@localhost docker]#

4、容器

a、启动容器
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
example      1.0.0     4928f88f3445   2 minutes ago   679MB
java         8         d23bdf5b1b1b   5 years ago     643MB
[root@localhost docker]# docker run --name sample -d -p 8080:8080 example:1.0.0
b、开放端口
[root@localhost docker]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
[root@localhost docker]# firewall-cmd --reload

5、测试

启动浏览器—>访问http://192.168.1.100:8080,如下所示:

以上是关于如何使用Docker发布SpringBoot项目的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Docker发布SpringBoot项目

2022 Docker企业运维实战集训营

Docker运维笔记三:IDEA使用Docker插件远程部署SpringBoot

如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

DockerMaven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(EclipseSTSIDEAMaven通用)

本地Docker部署SpringBoot项目