如何使用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运维笔记三:IDEA使用Docker插件远程部署SpringBoot
如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目
DockerMaven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(EclipseSTSIDEAMaven通用)