docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker部署Java项目

Docker容器部署Java项目的自动化脚本

作者:岫珩

这篇文章主要为大家详细介绍了Docker容器中部署Java项目的自动化脚本编写,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

1. 服务部署过程

先将Java项目在docker中部署的过程中所有命令列举

命令均在jar包同级目录下进行执行

1.1 移除旧jar包

正常应该会在更新时覆盖,但还是执行以下删除操作

rm -f app.jar

1.2 jar包更新

通过oss工具命令线上更新或者ftp工具上传更新

这里使用oss工具(使用ftp工具上传可省略这一步更新操作)

ossutil64 cp oss://sb-dev/sb_back/app.jar app.jar

1.3 停止旧容器

先停止原来的容器

docker stop sb_back

1.4 删除旧容器

删除原来的容器

docker rm sb_back

1.5 删除旧镜像

检索并删除原来的镜像

docker rmi sb_back:20250327

1.6 构建新镜像

构建新的镜像

docker build -t sb_back:20250327 .

参数描述

1.7 运行新容器

运行新的容器,自定义名称,指定端口映射

docker run --name sb_back -p 3006:8089 -d --restart=always sb_back:20250326

参数描述

2. 创建shell脚本文件

可以在本地创建后上传到服务器或者在服务器jar包同级目录创建

2.1 本地创建并上传到服务器

先在本地编辑(VSCode等编辑器创建一个sb_back.sh文件),将脚本内容粘贴进来并保存

使用FTP工具或者oss工具上传

ossutil64 cp oss://sb-dev/sb_back/sb_back.sh sb_back.sh

注意,由于Windows和Linux换行符不同,脚本上传后执行可能会报错,可参考4.3进行解决

2.2 服务器中创建sh文件

在jar包同级目录下创建名为sb_back.sh的文件

mkdir sb_back.sh

编辑文件

vim sb_back.sh

将脚本内容粘贴进来即可

(i开启输入模式,esc推出输出模式,:wq保存并退出)

3. 脚本内容

将以上名命令整合到一起就是脚本执行的命令,完整内容如下

3.1 简易脚本

停止容器、移除原有容器和镜像,构建镜像并部署容器的脚本命令

#!/bin/bash
# 1. 停止并删除旧容器
echo "Stopping and removing old container..."
docker stop sb_back || true
docker rm sb_back || true
# 2. 删除旧镜像(可选,强制重新构建时使用)
echo "Removing old image..."
docker rmi $IMAGE_NAME || true
# 3. 构建新镜像
echo "Building new image..."
docker build -t $IMAGE_NAME $DOCKERFILE_PATH
docker build -t sb_back:20250327 .
# 4. 运行新容器
echo "Starting new container..."
docker run -d --name sb_back -p 3006:8089 --restart=always sb_back:20250327
echo "Deployment completed!"

注:|| true 用于忽略未找到容器的错误

3.2 升级脚本

移除jar包,上传jar包,停止容器、移除容器和镜像、构建镜像和运行容器等命令整合

并且将容器名镜像名等以变量的形式传入

其中以时间变量作为镜像TAG

#!/bin/bash
# 定义当前日期,后续使用日期作为镜像TAG版本
DATE=$(date +%Y%m%d)
# 定义当前时间
CURRENT_TIME=`date +'%Y%m%d_%H%M%S'`
# 或者
# CURRENT_TIME=(date +%Y%m%d_%H%M%S)

# 输出当前时间内容
echo "DATE = "$DATE
echo "CURRENT_TIME = "$CURRENT_TIME

# 0. 移除旧jar包,放入新的jar包
echo "Removing jar and copy new jar..."
rm -f app.jar
ossutil64 cp oss://dev/3_JWH/01_SB_BACK/app.jar app.jar

# 部署配置(根据实际情况修改)
CONTAINER_NAME="sb_back"  # Docker容器名称
IMAGE_TAG=$DATE
IMAGE_NAME=$CONTAINER_NAME:$IMAGE_TAG      # Docker镜像名称
# JAR_PATH="./target/*.jar"       # 生成的Jar包路径
DOCKERFILE_PATH="."             # Dockerfile所在目录,jar包和dockerfile文件在同一位置
PORT_MAPPING="3006:8089"        # 端口映射, Java服务端口8089映射到本机服务器3006,外部访问时访问的就是3006端口

# 1. 停止并删除旧容器
echo "Stopping and removing old container..."
docker stop $CONTAINER_NAME || true
docker rm $CONTAINER_NAME || true

# 2. 删除旧镜像(可选,强制重新构建时使用)
echo "Removing old image..."
docker rmi $IMAGE_NAME || true

# 3. 构建新镜像
echo "Building new image..."
docker build -t $IMAGE_NAME $DOCKERFILE_PATH

# 4. 运行新容器
echo "Starting new container..."
docker run -d \
  --name $CONTAINER_NAME \
  -p $PORT_MAPPING \
  --restart=always \
  $IMAGE_NAME

echo "Deployment completed!"

4. 执行脚本

4.1 检查脚本

执行前可先检查以下脚本内容

cat sb_back.sh

4.2 执行脚本

在脚本所在目录,执行命令

sh sb_back.sh

注意:由于Windows中的换行符和Linux环境中的有所不同,可能会导致sh脚本执行报错,如报错可参考下一步解决

执行截图

4.3 报错处理

如果报错可先执行以下命令将替换Windows中的换行符为Linux的换行符

sed -i 's/\r$//' your_script.sh

更多解决方案参考文章:Docker构建镜像运行容器脚本出现换行符问题的解决

5. 查看镜像

执行脚本后,使用命令查看镜像是否更新

docker images

6. 查看容器

查看容器是否已经创建并运行

查看正在运行的容器

docker ps

以上就是Docker容器部署Java项目的自动化脚本的详细内容,更多关于Docker部署Java项目的资料请关注脚本之家其它相关文章!

阅读全文