shell脚本一键更新部署docker中服务

上一篇文章是,使用docker部署java服务运行,这样可以方便管理,方便查看日志。但是经过这几天的开发,我已经很不爽了,因为每次部署非常麻烦,打包 -> 复制到服务器 -> 删除原镜像 -> 删除原服务 -> 构建新服务 -> 运行新服务。 很繁琐,而且有的时候启动服务还要挂载其他目录很麻烦。

所以今天写个文章,使用脚本进行一键部署。因为目前开发任务有点重,所以先临时用这个方法。后续我有时间了,一定会再搭建一套基于Jekins的完成自动化CICD流程。

开始

接上一篇文章,首先是已经有了Dockerfile文件,和jar包文件,都上传到服务器。如下图:

然后我们再创建一个脚本文件,名字叫:deploy.sh

内容如下,直接上代码,里面我写好了注释,很简单。

sh 复制代码
#!/bin/bash
# 定义变量
IMAGE_NAME="sup-sys"   			#镜像名字(需修改)
CONTAINER_NAME="sup-sys"		#容器名字(需修改)
JAR_FILE="sup-app-1.0.0.jar"		#jar包(需修改)
PORT="18001"				#服务暴露端口(需修改)

# 构建Docker镜像
echo "########################## 构建镜像... ################################"
docker build -t $IMAGE_NAME .

RUNNING_CONTAINER=$(docker ps -q -f name=$CONTAINER_NAME)

if [ -n $RUNNING_CONTAINER ]; then
    echo "######################## 停止和删除已存在的镜像... ###############################"
    docker stop $CONTAINER_NAME
    docker rm $CONTAINER_NAME
fi

# 运行新的容器
echo "######################### 运行新的容器...############################"
docker run -d --name $CONTAINER_NAME -p $PORT:$PORT $IMAGE_NAME

echo "############################构建发布完成。。##################################"

稍微做一下解释,上面的代码中,只有最上面的我写了需修改的部分,改一下就可以了。脚本下面用$符合,直接引用的上面的变量,这就很方便了。

给你们看一下,运行的结果展示。

这样就舒服多了,终于不用再一个命令一个命令的敲了,直接运行 ./deploy.sh 就可以了。

补充

我这里再贴一些Dockerfile的代码吧,看更详细的就去我上一个文章就可以了,标题是【Docker构建启动jar包】Docker构建启动jar包

相关推荐
ACP广源盛139246256731 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
百年੭ ᐕ)੭*⁾⁾2 小时前
docker使用neo4j
docker·容器·neo4j
峥无2 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
码云数智-大飞3 小时前
本地部署大模型:隐私安全与多元优势一站式解读
运维·网络·人工智能
Harvy_没救了4 小时前
【网络部署】 Win11 + VMware CentOS8 + Nginx 文件共享服务 Wiki
运维·网络·nginx
春风有信4 小时前
【2026.05.01】Windows10安装Docker Desktop 4.71.0.0步骤及问题解决
运维·docker·容器
2401_873479405 小时前
断网时如何实时判断IP归属?嵌入本地离线库,保障风控不中断
运维·服务器·网络
守城小轩5 小时前
基于Chrome140的Yahoo自动化(关键词浏览)——需求分析&环境搭建(一)
运维·自动化·chrome devtools·浏览器自动化·指纹浏览器·浏览器开发
handler015 小时前
Linux 内核剖析:进程优先级、上下文切换与 O(1) 调度算法
linux·运维·c语言·开发语言·c++·笔记·算法
日取其半万世不竭7 小时前
LVM 逻辑卷管理:不停机扩容磁盘的正确方式
运维·服务器