介绍
项目在docker部署运行以后,每次需更新jar包时,都得重新制作镜像,再重新制作容器。流程及其繁琐,效率极低。
以下步骤是在不更新镜像和容器的前提下,直接更新jar完成项目更新的操作。
不重新制作镜像部署
1. 创建你存放项目的文件夹
我的文件目录是 /home/application/framework 分别在里面创建两个子文件夹 data : 存放项目jar包 , Dockerfile, start.sh ; tmp : 存放临时文件
2. 创建Dockerfile文件
# Docker image for springboot file run
# 基础镜像使用java
FROM openjdk:8-jdk
# 作者
MAINTAINER Mr.Gao
# VOLUME 指定了临时文件目录为/tmp。
VOLUME /tmp
#设置工作目录 此后RUN、CMD、ENTRYPOINT、COPY、ADD等命令都在此目录下作为当前工作目录
WORKDIR /data
#执行data下的 start.sh
CMD ["sh","-c","/data/start.sh"]
3. 创建 start.sh
#启动jar包 *** 表示你要运行的jar我的是 sky-server-1.0-SNAPSHOT.jar
java -jar /data/***.jar
在 start.sh文件夹下执行 chmod +x start.sh命令
4. 制作镜像
#sky 是镜像的名称可以根据自己的项目进行修改
docker build -t sky .
#查看容器镜像
docker images
5. 制作容器
docker run -d --name sky-api -it -v /home/application/framework/tmp:/tmp -v /home/application/framework/data:/data -p 8089:8080 sky
参数介绍
< -d 后台运行
< -mane 容器名称
< -p 指定端口映射 格式为: 主机port:容器port
< -it 运行一个交互式的容器,并分配一个伪终端
< -v 绑定一个卷
< --restart=always 自启动
< 最后面的sky 是你制作的镜像名
docker ps -a #查询容器是否启动
docker logs --tail 300 -f sky-api #查询容器的日志 sky-api 是你的容器名
6. 验证
我的验证方式是部署的jar和替换后的jar去除了一个接口
现在的接口是3个
#替换jar需要先停止docker容器
docker stop sky-api
上传要替换的jar包到你的项目的路径 我的是 /home/application/framework/data
上传完以后启动容器
docker start sky-api
启动以后再次验证
替换成功,三个接口变成两个了