Docker 部署后端项目自动化脚本

开机自启动docker

 systemctl enable docker
 systemctl is-enabled docker

打包后端项目

这里的项目位置是target同级目录

1.在项目下面新建一个bin目录 新建一个package.txt
写入下方代码后 后缀改为.bat

@echo off
echo.
echo [信息] 打包Web工程,生成war/jar包文件。
echo.

%~d0
cd %~dp0

cd ..
call mvn clean package -Dmaven.test.skip=true

pause

2.项目下新建一个deploy文件夹里面新建一个deploy.ps1脚本文件

  简单介绍下  将 windows上写的项目
  通过入口服务器(联网) 将项目部署到新的服务器(不通过入口服务器无法访问)  
$script_dir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$working_dir = $pwd
$deploy_dir = "/opt/diagnosis"

function deployBackEnd {
  cd $script_dir\..
  '' | .\bin\package.bat
  # 将项目上传到入口服务器的下载地址
  scp -P 13151 .\target\【你的jar包名字】.jar 你的服务器下载地址
  # 将入口服务器的下载地址上传的东西  放在 新服务器
  ssh  入口服务器(用户名@IP地址) -p端口号 "sshpass -p 密码  scp -o StrictHostKeyChecking=no 你服务器的下载地址 用户名@IP地址/部署地址"
  # 执行新服务器的脚本(下方介绍)
  ssh  入口服务器(用户名@IP地址) -p端口号 "sshpass -p 密码 ssh -o StrictHostKeyChecking=no 用户名@IP地址 ' bash 脚本名字'"
  # 删除入口服务器上上传的jar包
  ssh  入口服务器(用户名@IP地址) -p端口号 "rm -f 下载地址的安装包"
}
deployBackEnd

示例
这里使用ssh

$script_dir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$working_dir = $pwd
$deploy_dir = "/opt/diagnosis"

function deployBackEnd {
  cd $script_dir\..
  '' | .\bin\package.bat
  scp -P 13151 .\target\yudao-server.jar root@103.121.52.32:/var/www/html/download/
  ssh  root@109.115.52.38 -p13151 "sshpass -p '111000'  scp -o StrictHostKeyChecking=no /var/www/download/app.jar dell@192.168.80.47:/opt/diagnosis/target"
  ssh  root@109.115.52.38 -p13151 "sshpass -p 111000 ssh -o StrictHostKeyChecking=no dell@192.168.80.47 ' bash /opt/diagnosis/delete_and_run.bash'"
  ssh  root@109.115.52.38 -p13151 "rm -f /var/www/download/app.jar"
}
deployBackEnd

Dockerfile文件

可以自己编写不太一样

FROM eclipse-temurin:21-jre

## 创建目录,并使用它作为工作目录
RUN mkdir -p /app
WORKDIR /app
## 将后端项目的 Jar 文件,复制到镜像中
COPY ./target/app.jar app.jar

## 设置 TZ 时区
ENV TZ=Asia/Shanghai
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom"

## 应用参数
ENV ARGS=""

## 暴露后端项目的 48080 端口
EXPOSE 48080

## 启动后端项目
CMD java ${JAVA_OPTS} -jar app.jar $ARGS

上传到服务器中后自己选择一个合适的文件夹 然后旁边新建一个target文件夹 将上方的 jar包放入target里面 上方的脚本文件中存在
在这里插入图片描述
mnt 是共享文件的目录 logs是共享日志的目录

脚本文件


image_name="app"
image_tag="v1"

# 查找镜像 ID
image_id=$(docker images --format "{{.ID}}" --filter "reference=${image_name}:${image_tag}")

# 检查是否找到匹配的镜像
if [[ -n "$image_id" ]]; then
  echo "找到镜像 ${image_name}:${image_tag},ID 为 ${image_id}"

  # 停止并删除与该镜像相关的容器
  container_ids=$(docker ps -aq --filter "ancestor=${image_name}:${image_tag}")

  if [[ -n "$container_ids" ]]; then
    docker stop $container_ids
    docker rm $container_ids
    echo "已停止并删除与该镜像相关的容器"
  else
    echo "未找到与该镜像相关的容器"
  fi

  # 删除镜像
  docker rmi "$image_id"
  echo "成功删除镜像 ${image_name}:${image_tag}"
else
  echo "未找到镜像 ${image_name}:${image_tag}"
fi

  #构建镜像
  docker build -t "${image_name}:${image_tag}" /opt

  # 运行容器
  echo "开始启动 yudao-server 容器"
  docker run -d \
  --name="${image_name}" \
  -p 48080:48080 \
  -v /opt/logs:/root/logs/ \
  -v /opt/mnt:/root/mnt/ \
  --restart=always \
  "${image_name}:${image_tag}"
  echo "正在启动 diagnosis 容器中,需要等待 60 秒左右"
  echo "已成功运行容器 ${image_name},映射端口 48080:48080"

使用

右击 deploy.ps1 使用PowerShell运行即可

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开源的容器化平台,可以帮助开发者将应用程序和所有相关的依赖项打包成一个容器,然后在不同的环境中运行。而Spring Boot是一个用于开发Java应用程序的框架,可以简化应用程序的配置,并提供了内置的Web服务器等功能。 使用Docker部署Spring Boot应用程序,并使用脚本每次替换Jar文件,可以采取以下步骤: 1. 首先,确保在本地环境中已经安装了DockerDocker Compose。这些工具可以提供方便的容器管理和编排能力。 2. 创建一个Dockerfile,用于定义Docker镜像的构建规则。在Dockerfile中,指定使用的基础镜像、拷贝Spring Boot应用程序的Jar文件到容器中,并设置容器的入口命令。 3. 在Dockerfile同级目录下,创建一个docker-compose.yml文件,用于定义Docker容器的编排规则。在这个文件中,指定要运行的服务、容器的名称、端口映射等信息。 4. 编写一个简单的脚本,用于构建Docker镜像并启动容器。在脚本中,可以使用Docker命令进行相关的操作,如构建镜像、删除旧的容器、运行新的容器等。脚本可以将这些操作整合到一起,并根据需要传递参数,如新的Jar文件的路径。 5. 在每次需要部署更新的时候,将新的Spring Boot应用程序的Jar文件复制到指定的目录中。然后运行部署脚本脚本会自动构建新的Docker镜像,并在Docker容器中运行最新的应用程序。 通过以上步骤,我们可以实现使用Docker部署Spring Boot应用程序,并使用脚本每次替换Jar文件。这样可以方便地进行应用程序的更新和部署,并确保每次部署都是基于最新的Jar文件进行的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值