如何更新或替换docker中运行的jar包项目

本文分享了在未部署Jenkins的服务器上手动更新SpringBoot项目的步骤:通过浏览器登录Docker,停止目标项目,上传新jar包,使用脚本定位并替换旧包,最后重启项目。方法简单直接,适合于自动化工具不可用的场景。

当我们的服务器上并没有部署Jenkins,那么更新springboot项目往往需要手动操作,以下便是我总结的方法,简单粗暴、真实有效。

1.直接浏览器登录docker,关掉需要更新的项目

2.将打包好的jar包传到服务器上
3.执行以下脚本,找到你要替换的jar包的位置
find / -name 你的jar包名

替换docker中的两个jar包(通常情况下只有两个文件),选择“Y”

cp 你的jar包路径 需要替换的jar包路径

4.最后在docker中启动你刚才关闭的项目,如此,大功告成!!

Docker替换镜像中的 jar 通常需要重新构建镜像,因为 Docker 镜像的每一层都是不可变的。以下是具体步骤: 1. **创建 Dockerfile**: 如果你还没有 Dockerfile,需要创建一个。假设你的应用是基于 Spring Boot 的,并且 jar 名为 `app.jar`,Dockerfile 可能如下: ```dockerfile FROM openjdk:8-jdk-alpine COPY target/app.jar /app/app.jar ENTRYPOINT ["java", "-jar", "/app/app.jar"] ``` 2. **替换 jar **: 将新的 jar 复制到构建上下文中(通常是 Dockerfile 所在的目录),并确保 Dockerfile 中的 `COPY` 指令指向正确的文件。 3. **构建镜像**: 使用 `docker build` 命令重新构建镜像。例如: ```bash docker build -t my-app . ``` 4. **运行容器**: 使用新构建的镜像运行容器: ```bash docker run -d --name my-app-container my-app ``` ### 替代方法:直接替换容器中的文件 如果你不想重新构建镜像,可以进入运行中的容器并替换 jar 。但这种方法不推荐用于生产环境,因为它违反了 Docker 的不可变基础设施原则。 1. **进入运行中的容器**: ```bash docker exec -it my-app-container /bin/sh ``` 2. **替换 jar **: 在容器内部,使用 `cp` 命令其他方式将新的 jar 复制到正确的位置,然后重启应用。 ```bash cp /path/to/new/app.jar /app/app.jar ``` 3. **重启应用**: 根据你的应用配置,可能需要重启应用才能加载新的 jar 。 ### 最佳实践 - **使用卷(Volumes)**: 对于频繁变更的文件(如 jar ),可以考虑使用 Docker 卷。这样你可以在不重新构建镜像的情况下更新文件。 ```bash docker run -d --name my-app-container -v /path/to/local/app.jar:/app/app.jar my-app ``` - **自动化构建**: 使用 CI/CD 工具(如 Jenkins、GitHub Actions)自动化构建和部署过程,确保每次 jar 更新后都能重新构建镜像。 ### 注意事项 - **镜像层**: 每次重新构建镜像时,Docker 会尽可能复用之前的层。如果只有 jar 发生变化,只有jar 的那一层会重新生成,其他层会复用。 - **安全性**: 直接进入容器修改文件可能会带来安全风险,尤其是在生产环境中。建议使用不可变镜像和版本控制来管理应用。 通过以上方法,你可以有效地替换 Docker 镜像中的 jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值