0

0

docker怎么部署SpringBoot及替换jar包

PHPz

PHPz

发布时间:2023-05-12 14:16:14

|

2615人浏览过

|

来源于亿速云

转载

工程目录

docker怎么部署SpringBoot及替换jar包

dockerfile文件

创建dockerfile文件,后面会用到。

文件部署

在服务器新建/data/docker/hellolearn文件夹(文件路径可自定义),将maven打包好的jar包和上文中创建的dockerfile文件复制到服务器新建的文件夹(/data/docker/hellolearn)。

docker怎么部署SpringBoot及替换jar包

生成镜像

docker build -t hellolearn .

docker build -t 镜像名称:标签 dockerfile的相对位置,点号代表当前目录,不写tag默认是latest。

docker怎么部署SpringBoot及替换jar包

启动容器

docker run -d -p 8301:8301 --name hellolearn hellolearn

docker start hellolearn

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

访问web

docker怎么部署SpringBoot及替换jar包

jar包映射部署

按照上文的步骤已足可以轻松应对docker部署springboot的全流程。但是这样在启动容器后,每次需更新jar包时,都得重新制作镜像,再重新制作容器。流程及其繁琐,效率极低。那如何在不更新镜像或者容器的前提下直接更新jar包完成部署呢?

5.1 更新dockerfile

最后一行 entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"] 会运行容器里/data目录下的learn-web-0.0.1-snapshot.jar文件。

5.2 使用docker build命令构建镜像

docker build -t hellolearn .

5.3 创建&启动容器

docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn

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

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

脚本部署

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

6.1 创建hellolearn.sh文件

java -jar /data/learn-web-0.0.1-snapshot.jar

将hellolearn.sh上传到/data/docker/hellolearn/scriptdeploy/package,这个文件夹路径可以自定义,记住这个文件夹路径,后面还会用到。

6.2 添加脚本执行权限

chmod +x hellolearn.sh

6.3 创建dockerfile

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

注意最后一条命令上文中都是entrypoint,在脚本部署中改成了cmd,至于entrypoint和cmd的具体区别感兴趣的可以了解一下。

6.4 上传jar包

将jar包放入hellolearn.sh的同一个文件夹目录,即/data/docker/hellolearn/scriptdeploy/package,创建容器时再将该目录(宿主机目录)与容器的/data目录进行映射。。

Asksia
Asksia

Asksia AI - 最好的AI老师,可靠的作业助手

下载

6.5 文件目录结构图

docker怎么部署SpringBoot及替换jar包

这里的目录结构不知道大家晕不晕,上传一张我这宿主机的目录结构图,一目了然。

6.6 创建镜像

docker build -t hellolearn-script .

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

6.7 创建&启动容器

docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302:8301 hellolearn-script

docker start hellolearn-script

将宿主机的/data/docker/hellolearn/scriptdeploy/package目录与容器的/data目录映射关联。这样的话,当jar包发生变动时,直接更新宿主机目录下的jar包即可。即使jar包名字发生变化,也需要再更新一下hellolearn.sh脚本。更新之后重启容器。

6.8 web测试效果

docker怎么部署SpringBoot及替换jar包

查看docker日志

docker logs [options] container id

options说明:

-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新n条容器日志

7.1 查看指定时间后的日志,只显示最后100行:

docker logs -f -t --since="2020-10-01" --tail=100 container id

7.2 查个指定时间区段的日志

docker logs -t --since="2020-10-01t19:00:00" --until "2020-10-01t19:00:00" container id

7.3 查看指定时间后面的日志:

docker logs -t --since="2020-10-01t19:00:00" container id

7.4 查看最近5分钟的日志:

docker logs --since 5m container id

7.5 通过 exec 命令对指定的容器执行 bash:

docker exec hellolearn -it /bin/bash 或者 docker exec -it hellolearn bash

7.6 查看docker ip

docker inspect --format='{{.networksettings.ipaddress}}' hellolearn

遇到的问题

问题描述:error response from daemon: driver failed programming external connectivity on endpoint flamboyant_leavitt (iptables failed: iptables --wait -t nat -a docker -p tcp -d 0/0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0: iptables: no chain/target/match by that name.

解决方案:重启docker。 systemctl restart docker

相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

55

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号