当前位置:   article > 正文

Docker部署SpringBoot服务的三种方法

docker部署springboot

总结一下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"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2、文件部署

在服务器创建文件夹/docker/blog,将maven打包好的jar包和上文创建的Dockerfile文件复制到服务器新建的文件夹中。
在这里插入图片描述

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

docker build -t blog4docker .
  • 1

4、启动容器

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

-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文件。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

docker build -t blog4docker .
  • 1

3、创建并启动容器

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

-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
  • 1

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

2、添加脚本执行权限

chmod +x start.sh
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4、上传jar包

把打包的jar包上传的/docker/blog中,和start.sh放在同一个目录下,并创建logs文件夹,用于存放项目日志,目录结构如下:
在这里插入图片描述

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

docker build -t blog4docker .
  • 1

6、启动容器

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57850?site
推荐阅读
相关标签
  

闽ICP备14008679号