Docker部署SpringBoot服务的三种方法

2023-02-17 00:00:00 部署 方法 三种

总结一下spring boot开发的jar在doker下部署的几种不同的方式

一、文件部署

1、创建Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: Mr.Liu
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER Mr.Liu
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD blog-0.0.1-SNAPSHOT.jar blog.jar
# 运行jar包
RUN bash -c 'touch /blog.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/blog.jar"]

2、文件部署

在服务器创建文件夹/docker/blog,将maven打包好的jar包和上文创建的Dockerfile文件复制到服务器新建的文件夹中。
《Docker部署SpringBoot服务的三种方法》

3、生成镜像(命令行结尾带一个 “.” )

docker build -t blog4docker .

4、启动容器

docker run -d --name blog -p 30317:8080 blog4docker

-d参数是让容器后台运行;
–name为指定容器的名称;
-p 是做端口映射,此时将服务器中的30317(冒号前的端口)端口映射到容器中的8080(冒号后的端口)端口(application.yml配置的是8080)

5、访问

到这里最简单的部署就完成了,浏览器可以直接访问了。
http://ip:30317/

二、Jar包映射部署

按照上文的步骤已足可以轻松应对docker部署springboot的全流程。但是这样在启动容器后,每次需更新jar包时,都得重新制作镜像,再重新制作容器。流程及其繁琐,效率极低。

以下步骤是在不更新镜像和容器的前提下,直接更新jar完成项目更新的操作。

1、修改Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: Mr.Liu
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER Mr.Liu
ENTRYPOINT ["java","-jar","/data/blog.jar"]
#最后一行 ENTRYPOINT ["java","-jar","/data/blog.jar"] 会运行容器里/data目录下的blog.jar文件。

2、重新构建镜像(命令行结尾带一个 “.” )

docker build -t blog4docker .

3、创建并启动容器

docker run --name blog -it -v /docker/blog:/data -d -p 30317:8080 blog4docker

-v 宿主机目录关联容器目录。这样宿主机的/data/docker/newhellolearn/package目录就与docker的/data目录进行映射。
这样的话,当jar包发生变动时,直接更新宿主机的/data/docker/newhellolearn/package目录下的jar包即可,更新jar包之后需要将容器重启一下

三、脚本部署

通过jar包部署方式引起一个问题,若jar包名字发生变化,比如版本号变化(blog-0.0.1-SNAPSHOT.jar–>>blog-1.0.1-SNAPSHOT.jar)。需要怎么处理呢?下面就介绍第三种通过脚本部署的方式。

1、创建start.sh文件

java -jar /data/blog-0.0.1-SNAPSHOT.jar > /data/logs/console.out

这里的/data和/data/logs是容器中的文件路径

2、添加脚本执行权限

chmod +x start.sh

3、创建Dockerfile

# Docker image for springboot file run
# VERSION 0.0.1
# Author: Mr.Liu
# 基础镜像使用java
FROM java:8
CMD ["sh","-c","/data/start.sh"]
#CMD ["sh","-c","/data/hellolearn.sh"] 表示在容器启动时启动上面创建的start.sh脚本。
#注意最后一条命令上文中都是ENTRYPOINT,在脚本部署中改成了CMD

4、上传jar包

把打包的jar包上传的/docker/blog中,和start.sh放在同一个目录下,并创建logs文件夹,用于存放项目日志,目录结构如下:
《Docker部署SpringBoot服务的三种方法》

5、创建镜像(命令行结尾带一个 “.” )

docker build -t blog4docker .

6、启动容器

docker run --name blog -it -v /docker/blog:/data -d -p 30317:8080 blog4docker
    原文作者:暗夜91
    原文地址: https://blog.csdn.net/liulili1991/article/details/124439301
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章