当前位置:   article > 正文

docker部署Springboot的三种方式(入门、jar包、脚本)_jar包放宿主机,容器映射

jar包放宿主机,容器映射

一、入门部署

可参考上篇博客 入门方式

二、jar包映射部署

启动容器后,每次需更新jar包时,都得重新制作镜像,再重新制作容器。流程及其繁琐,效率极低。那如何在不更新镜像或者容器的前提下直接更新jar包完成部署呢?

  1. 更新Dockerfile文件
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD trainning-service-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/home/xbb/trainning-service-0.0.1-SNAPSHOT.jar"]
  • 1
  • 2
  • 3
  • 4

最后一行ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/home/xbb/trainning-service-0.0.1-SNAPSHOT.jar"]会运行容器里/home/xbb/trainning-service-0.0.1-SNAPSHOT.jar文件

  1. 使用docker build构建镜像
docker build -t trainning .
  • 1
  1. 创建并启动容器
docker run --name trainning -it -v /home/xbb/:/home/xbb -d -p 8097:8080 trainning
  • 1

-v 宿主机目录关联容器目录。这样宿主机的/home/xbb目录就与docker的/home/xbb目录进行映射。

这样的话,当jar包发生变动时,直接更新宿主机的/home/xbb目录下的jar包即可,更新jar包之后需要将容器重启一下。

三、脚本部署

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

  1. 首先创建startup.sh 文件
java -jar /data/trainning-service-0.0.1-SNAPSHOT123.jar
  • 1

将startup.sh上传到/home/xbb,这个文件夹路径可以自定义,记住这个文件夹路径,后面还会用到。

  1. 添加脚本执行权限
chmod +x startup.sh
  • 1
  1. 创建Dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: toutou
# 基础镜像使用java
FROM java:8
CMD ["sh","-c","/data/startup.sh"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

CMD ["sh","-c","/data/hellolearn.sh"]表示在容器启动时启动所创建的startup.sh脚本。

  1. 上传jar包
    将jar包放入startup.sh的同一个文件夹目录,即/home/xbb,创建容器时再将该目录(宿主机目录)与容器的/data目录进行映射
  2. 创建镜像
docker build -t trainning .
  • 1

末尾的点号代表当前目录,所以生成镜像的命令需要在Dockerfile所在的目录执行。

  1. 创建并启动容器
docker run --name trainning -it -v /home/xbb:/data -d -p 8097:8080 trainning
  • 1

将宿主机的/home/xbb目录与容器的/data目录映射关联。这样的话,当jar包发生变动时,直接更新宿主机目录下的jar包即可。当jar包名称发生变化时,直接更改startup.sh文件里的jar名称,重新启动容器即可。

  1. 访问服务
    在这里插入图片描述
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/article/detail/57867
推荐阅读
相关标签
  

闽ICP备14008679号