脚本实现上传jar以及docker发布

小项目每次手动maven打包,打包后要手动上传、手动执行?想要部署jekins又感觉稍重,所以写了个脚本一键上传和部署

工具:winSCP

cd C:\Program Files (x86)\WinSCP

WinSCP.com /script=C:\Users\xc\Desktop\xyzl\deploy\admin_deploy_215.bat
pause

1、命令作用:切换到 WinSCP 的安装目录,确保可以正确调用 WinSCP.com
2、使用 WinSCP.com 命令行工具执行上传细节脚本文件


open 服务器用户名:密码@服务器地址:22
put C:\Users\xc\Desktop\xyzl\test.jar /home/ubuntu/test.jar
exit
这样每次只要执行一个命令就能具体把jar包传到具体的服务器上,不用每次打开服务器,使用scp命令(虽然看似也没省多少力吧哈哈)

上传完成了接下来就是部署:
部署我也写了一个脚本,因为后续可能有多个服务部署,所以我是输入容器名称部署对应的服务。服务我是用docker运行的,所以每次只需要更新docker里的jar包文件,不用重新打镜像,亲测效率高!!!
#!/bin/sh

# 容器路径配置
CONTAINER_PATHS_test="/home/ubuntu/test.jar /app/xyzl/test.jar"

# 获取容器名称
echo "输入容器名称:"
read CONTAINER_NAME

# 判断容器是否存在
docker ps -q --filter "name=$CONTAINER_NAME" > /dev/null
if [ $? -ne 0 ]; then
  echo "容器 $CONTAINER_NAME 不存在,请检查容器名称是否正确。"
  exit 1
fi

# 根据容器名称选择路径
case "$CONTAINER_NAME" in"test")
    CONTAINER_PATHS="$CONTAINER_PATHS_test"
    ;;
  *)
    echo "错误:没有找到对应容器名称 $CONTAINER_NAME 的配置,请检查输入。"
    exit 1
    ;;
esac

# 获取 JAR 文件路径和容器路径
JAR_FILE_PATH=$(echo $CONTAINER_PATHS | cut -d' ' -f1)
CONTAINER_PATH=$(echo $CONTAINER_PATHS | cut -d' ' -f2)

# 备份路径,增加时间戳
BACKUP_PATH="${CONTAINER_PATH}_$(date +%Y%m%d%H%M%S)"
echo "正在备份容器 $CONTAINER_NAME 中的 JAR 文件到 $BACKUP_PATH..."
docker exec "$CONTAINER_NAME" cp "$CONTAINER_PATH" "$BACKUP_PATH"

# 拷贝 JAR 文件到容器
echo "正在将 JAR 文件 $JAR_FILE_PATH 拷贝到容器 $CONTAINER_NAME 的路径 $CONTAINER_PATH..."
docker cp "$JAR_FILE_PATH" "$CONTAINER_NAME:$CONTAINER_PATH"

# 重启容器
echo "正在重启容器 $CONTAINER_NAME..."
docker restart "$CONTAINER_NAME"

# 直接显示容器日志
echo "容器日志如下:"
docker logs --tail 500 -f "$CONTAINER_NAME"

 

 
posted @ 2025-02-07 17:24  fqqBob  阅读(31)  评论(0)    收藏  举报