deploy.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. APP_NAME="survey-service"
  2. SERVER_IP="192.168.199.146"
  3. SERVER_USER="root"
  4. SERVER_SSH_PORT="22"
  5. SERVER_DEPLOY_DIR="/docker/services/$APP_NAME"
  6. SERVER_DEPLOY_APP="$SERVER_DEPLOY_DIR/app"
  7. SERVER_DEPLOY_ENV="$SERVER_DEPLOY_DIR/.env"
  8. SERVER_DEPLOY_DOCKER_FILE="$SERVER_DEPLOY_DIR/Dockerfile"
  9. SERVER_DOCKER_COMPOSE_DIR="/docker"
  10. OUTPUT_APP="./app"
  11. OUTPUT_ENV="./.env"
  12. OUTPUT_DOCKERFILE="./Dockerfile"
  13. # 本地打包
  14. bash ./build.sh
  15. # 检查远程目录是否存在
  16. ssh -p $SERVER_SSH_PORT $SERVER_USER@$SERVER_IP \
  17. "
  18. if [ ! -d ${SERVER_DEPLOY_DIR} ]; then
  19. sudo mkdir -p ${SERVER_DEPLOY_DIR};
  20. fi
  21. "
  22. # 删除app文件
  23. ssh -p $SERVER_SSH_PORT $SERVER_USER@$SERVER_IP \
  24. "
  25. sudo rm -rf $SERVER_DEPLOY_APP;
  26. "
  27. # 将应用文件上传到服务器(使用rsync+sudo)
  28. rsync -avz -e "ssh -p $SERVER_SSH_PORT" \
  29. $OUTPUT_APP \
  30. $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_APP \
  31. --rsync-path="sudo rsync"
  32. # 将环境文件上传到服务器
  33. rsync -avz -e "ssh -p $SERVER_SSH_PORT" \
  34. $OUTPUT_ENV \
  35. $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_ENV \
  36. --rsync-path="sudo rsync"
  37. # 将Dockerfile上传到服务器
  38. rsync -avz -e "ssh -p $SERVER_SSH_PORT" \
  39. $OUTPUT_DOCKERFILE \
  40. $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_DOCKER_FILE \
  41. --rsync-path="sudo rsync"
  42. # # 将文件上传到服务器
  43. # scp -r -P $SERVER_SSH_PORT \
  44. # $OUTPUT_APP \
  45. # $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_APP
  46. # scp -r -P $SERVER_SSH_PORT \
  47. # $OUTPUT_ENV \
  48. # $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_ENV
  49. # scp -r -P $SERVER_SSH_PORT \
  50. # $OUTPUT_DOCKERFILE \
  51. # $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_DOCKER_FILE
  52. # 构建Docker等部署
  53. ssh -p $SERVER_SSH_PORT $SERVER_USER@$SERVER_IP \
  54. "
  55. cd ${SERVER_DOCKER_COMPOSE_DIR};
  56. sudo docker build -t $APP_NAME --no-cache ${SERVER_DEPLOY_DIR}
  57. sudo docker compose stop $APP_NAME
  58. sudo docker compose rm -f $APP_NAME
  59. sudo docker compose up -d $APP_NAME
  60. "