只需一行命令就可使用应用部署或重新部署
当我们部署Java项目时,一般有两种部署方式:
- 使用java -jar命令来运行jar包
- 将应用打成jar包以容器的方式进行部署
本篇文章主要讲解第二种方式,以部署xxl-job-admin为例
1.编写restart.sh脚本(使用脚本时按需修改上方脚本和最后的容器启动参数)
# ========== 变量定义 ==========
# 镜像名
image_name=xxl-job-admin
# 容器名
cantiner_name=xxl-job-admin
# 对外ip
ipaddress_open=0.0.0.0
# 对外暴露端口
port_open=8986
# 内部端口
port_inner=8986
# 旧版本号
version_old=latest
# 新版本号
version_new=latest
# ========== 执行过程 ==========
# 停止容器
docker stop $cantiner_name
# 删除容器
docker rm $cantiner_name
# 删除镜像
docker rmi $image_name:$version_old
# 打镜像
docker build -t $image_name:$version_new .
# 运行镜像
docker run --name $cantiner_name -d -p $ipaddress_open:$port_open:$port_inner $image_name --restart=always
2.编写Dockerfile文件(使用脚本时按需修改上方脚本和最后的容器启动参数)
# 基础镜像
FROM eclipse-temurin:8-jre
# 创建了一个挂载点 /tmp。这表示容器内的 /tmp 目录可以在容器外部挂载一个卷,这样可以方便地将数据在容器和主机之间共享。
VOLUME /tmp
# 将主机上的 xxl-job-admin.jar 文件添加到镜像的根目录中,并命名为 xxl-job-admin.jar。ADD 指令会将文件从构建上下文(当前目录)复制到镜像中。
ADD ./xxl-job-admin.jar xxl-job-admin.jar
# 入口,启动命令
ENTRYPOINT ["java","-jar","-Xms256m", "-Xmx512m","/xxl-job-admin.jar", "&"]
3.修改两个文件的权限
# 注意这里我的启动脚本名字为restart-new.01.sh
chmod 777 restart-new.01.sh Dockerfile
4.将应用jar包与restart.sh、Dockerfile放在同一文件夹
5.执行restart.sh脚本
sh restart-new-01.sh
或
./restart-new-01.sh
6.查看容器是否启动成功
docker logs -f [容器名|容器id]
重新部署时也是使用
sh restart-new-01.sh
或
./restart-new-01.sh