Springboot 利用脚本把本地应用程序自动部署到服务器Docker中

springboot 利用脚本把本地应用程序自动部署到服务器docker中

  1. 说明

    • 在springboot的项目开发完毕后,需要把打包后的jar包发布到服务器的docker中

      • 如果采用手工发布比较麻烦

      • 采用git结合持续化部署需要搭建一套持续化部署平台,比较复杂

      • 这里采用shell脚本的方式把本地开发好的项目自动部署到服务中并重启容器

  2. 环境准备

    • 服务器支持采用密钥方式登录

      • 服务器支持非管理员用户直接使用sudo执行命令,无需输入密码

  3. 部署脚本

    • sh/config

      shopt -s expand_aliases  # 启用别名
      
      SERVER='test@hw.rstone.com.cn'
      echo "部署到hw.rstone.com.cn服务器"
      #ssh
      alias SSHEXEC='ssh -i /Users/test/.ssh/id_rsa.hw  test@hw.rstone.com.cn'
      alias SSHEXECSUDO='ssh -i /Users/test/.ssh/id_rsa.hw  test@hw.rstone.com.cn sudo'
      alias SSHSCP='scp -i /Users/test/.ssh/id_rsa.hw '
      • sh/deploy.sh

      #!/bin/bash
      
      #脚本在执行时遇到错误立即退出
      set -e
      #开启命令打印用于调试
      #set -x
      
      #获取本执行文件的路径
      currentpath=$(cd "$(dirname "$0")" && pwd)
      #加载配置文件
      source ${currentpath}/config
      
      #获取target目录
      targetpath=$(cd "$(dirname "$0")" && cd ../rstone-admin/target && pwd)
      
      echo "开始发布..."
      
      echo "拷贝target 目录下的 rstone-admin.jar 拷贝到服务器"
      eval SSHSCP " ${targetpath}/rstone-admin.jar  ${SERVER}:/tmp/app.jar"
      echo "停止容器"
      SSHEXEC "sudo docker stop rstone-web-backend"
      echo "拷贝到容器映射目录"
      SSHEXEC "sudo cp /tmp/app.jar /docker-data/rstone-web-backend/app/app.jar"
      echo "启动容器"
      SSHEXEC "sudo docker start rstone-web-backend"
      echo "删除临时文件"
      SSHEXEC "yes | rm /tmp/app.jar"
      
      echo "发布完成"

# springboot 利用脚本把本地应用程序自动部署到服务器docker中

1. 说明
  - 在springboot的项目开发完毕后,需要把打包后的jar包发布到服务器的docker中
    - 如果采用手工发布比较麻烦
    - 采用git结合持续化部署需要搭建一套持续化部署平台,比较复杂
    - 这里采用shell脚本的方式把本地开发好的项目自动部署到服务中并重启容器
2. 环境准备
  - 服务器支持采用密钥方式登录
    - 服务器支持非管理员用户直接使用sudo执行命令,无需输入密码
3. 部署脚本
  - sh/config
    ```bash
    shopt -s expand_aliases  # 启用别名

    SERVER='test@hw.rstone.com.cn'
    echo "部署到hw.rstone.com.cn服务器"
    #ssh
    alias SSHEXEC='ssh -i /Users/test/.ssh/id_rsa.hw  test@hw.rstone.com.cn'
    alias SSHEXECSUDO='ssh -i /Users/test/.ssh/id_rsa.hw  test@hw.rstone.com.cn sudo'
    alias SSHSCP='scp -i /Users/test/.ssh/id_rsa.hw '
    ```
    - sh/deploy.sh
    ```bash
    #!/bin/bash

    #脚本在执行时遇到错误立即退出
    set -e
    #开启命令打印用于调试
    #set -x

    #获取本执行文件的路径
    currentpath=$(cd "$(dirname "$0")" && pwd)
    #加载配置文件
    source ${currentpath}/config

    #获取target目录
    targetpath=$(cd "$(dirname "$0")" && cd ../rstone-admin/target && pwd)

    echo "开始发布..."

    echo "拷贝target 目录下的 rstone-admin.jar 拷贝到服务器"
    eval SSHSCP " ${targetpath}/rstone-admin.jar  ${SERVER}:/tmp/app.jar"
    echo "停止容器"
    SSHEXEC "sudo docker stop rstone-web-backend"
    echo "拷贝到容器映射目录"
    SSHEXEC "sudo cp /tmp/app.jar /docker-data/rstone-web-backend/app/app.jar"
    echo "启动容器"
    SSHEXEC "sudo docker start rstone-web-backend"
    echo "删除临时文件"
    SSHEXEC "yes | rm /tmp/app.jar"

    echo "发布完成"
    ```