脚本实现上传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"

浙公网安备 33010602011771号