使用docker部署jar包后,如果jar包更新如何在不重新打镜像的前提下,升级jar包
时间: 2025-06-05 22:01:14 浏览: 18
### 在不重新构建镜像的情况下更新 Docker 容器中的 JAR 包
为了实现在无需重建镜像的前提下升级容器内部的 JAR 文件,可以采用挂载主机上的文件或目录到容器的方式。这种方法允许动态更改容器内的资源而不需要每次都重复整个镜像构建过程。
#### 方法一:使用 `-v` 参数绑定宿主机与容器间的卷
通过 Docker 的 `-v` 或者 `--mount` 选项能够把本地磁盘上的某位置映射至正在运行的容器内特定路径下。如此一来只要修改了源处的数据内容,那么目标地址也会即时反映最新状态出来。
```bash
docker run -d \
-p 8080:8080 \
-v $(pwd)/target:/app/target \
--name my-java-app \
openjdk:8-jdk-alpine java -jar /app/target/my-application-1.0-SNAPSHOT.jar
```
在此例子中,我们将当前工作空间里的 `target` 文件夹共享给了容器里面的 `/app/target` 地址[^1]。每当您再次编译生成新的版本号时只需简单替换掉旧版即可自动生效,完全不必担心额外开销问题。
#### 方法二:进入已存在的容器手动替换成最新的JAR包
另一种可行的办法就是先进入已经启动起来的目标容器里面去删除原有的那个过期副本再上传一份新鲜出炉的产品过去覆盖之。
第一步先停止现有的服务进程:
```bash
docker exec -it <container_id> bash
kill $(lsof -t -i :8080)
exit
```
第二步则是将修订后的软件制品传送到远程服务器上去:
```bash
scp ./target/new-version.jar user@remote_host:/path/to/container/mountpoint/
```
第三步回到之前打开的那个终端窗口继续操作下去吧!
```bash
mv /path/to/container/mountpoint/new-version.jar /app/app.jar && chmod +x /app/app.jar
nohup java -jar /app/app.jar &
```
这样做的好处在于灵活性较高而且实施简便快捷,不过需要注意的是每次都需要人为干预所以自动化程度较低一些[^3]。
---
#### 注意事项
无论采取哪种策略都建议事先做好充分验证确保一切正常运转后再投入生产环境当中以免造成不必要的麻烦哦!另外记得调整安全权限使得新加入的对象拥有恰当读写属性从而顺利加载执行起来[^2]。
---
阅读全文
相关推荐

















