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

这篇具有很好参考价值的文章主要介绍了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里面 上方的脚本文件中存在
Docker 部署后端项目自动化脚本,docker,自动化,python
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运行即可文章来源地址https://www.toymoban.com/news/detail-791249.html

到了这里,关于Docker 部署后端项目自动化脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jenkins+docker实现可持续自动化部署springboot项目

    目录 一、前言 二、微服务带来的挑战 2.1 微服务有哪些问题

    2024年04月15日
    浏览(58)
  • Jenkins+Docker 实现一键自动化部署项目!步骤齐全,少走坑路

    大家好,我是互联网架构师! 本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。 环境 :centos7+git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 docker 安装社区版本CE

    2024年02月09日
    浏览(27)
  • github-action+docker实现项目可持续自动化部署

    这篇文章以部署vue3项目和nuxt2项目为例结合 github-action , docker , nginx 等介绍不同的项目自动部署流程 部署vue3项目 步骤: 1、腾讯云开启镜像仓库 2、github配置secrets 3、项目根目录创建dockerfile文件(在action工作流中创建镜像) 4、github配置action工作流(yml文件) 上面步骤执行结

    2024年04月26日
    浏览(16)
  • github-webhook+docker实现项目可持续自动化部署

    使用nginx+pm2+github-webhook+docker实现项目自动部署 注:docker也能实现pm2的守护进程功能(持续启动项目),所以使用了docker就不需要使用pm2了 但是需要注意的是使用node启动的webhook服务器不能使用docker,因为在webhook内部的sh脚本执行时需要到服务器的前后端项目文件中去执行,

    2024年04月12日
    浏览(31)
  • 云服务器使用jenkins+docker自动化部署SpringBoot项目

    docker 安装jenkins,就这一步都恶心死了 //拉取镜像,踩了很多坑,用其它版本的镜像插件一直安装失败,最后用的是lts版本(基础版) 用其它版本要么是连不上插件的下载地址,要么是插件下载不成功  docker pull jenkins/jenkins:lts  部署 docker run --user root -d -p 10240:8080 -p 10241:50

    2024年02月01日
    浏览(25)
  • Jenkins + Docker 一键自动化部署 Spring Boot 项目,步骤齐全,少走坑路!

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。 环境 :centos7+git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 推荐一个开源免费的 Spring Boot 实战项目: https://git

    2024年02月08日
    浏览(39)
  • Docker 自动化部署(实践)

    docker search jenkins查看需要的jenkins镜像源 docker pull jenkins/jenkins 拉取jenkins镜像 docker images查看下载的镜像源 docker ps 查看包含启动以及未启动的容器 docker ps -a查看启动的容器 docker rm 容器id/容器名称 删除容器 docker rm -f 容器id/容器名称 删除容器(强制删除容器,运行状态也删除

    2024年02月07日
    浏览(29)
  • Jenkins自动化部署docker

    准备测试服务器docker环境 准备jdk环境 将上传jar包修改为 app.jar 对外暴露 1000 端口 启动jar 制作镜像 将上传的镜像先测试,我的jar包叫 sky-server-1.0-SNAPSHOT.jar 先将这个做成镜像 创建容器 将之前做的镜像运行 环境准备 前提需要Jenkins和Gitea这个要提前准备好。 1、配置Jenkins的M

    2024年01月17日
    浏览(33)
  • Docker 自动化部署(保姆级教程)

    jenkins介绍 jenkins部署Vue项目 docker安装Jenkins Jenkins:是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。 开发的步骤: 开发者会将代码上传到版本库中

    2024年02月07日
    浏览(32)
  • docker+jenkins 实现自动化部署

    工欲善其事必先利其器,所以前期的准备工作必须做好,那么我们要实现自动化部署,必须提前准备什么呢?哈哈哈,可能有一些小伙伴已经猜到了,我们需要一台自己的服务器,这里博主使用的自己够买一台腾讯云的轻量服务器,折扣完了才一百多块钱,当然小伙伴也可以

    2024年02月06日
    浏览(237)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包