APP_NAME="survey-service" SERVER_IP="192.168.199.146" SERVER_USER="root" SERVER_SSH_PORT="22" SERVER_DEPLOY_DIR="/docker/services/$APP_NAME" SERVER_DEPLOY_APP="$SERVER_DEPLOY_DIR/app" SERVER_DEPLOY_ENV="$SERVER_DEPLOY_DIR/.env" SERVER_DEPLOY_DOCKER_FILE="$SERVER_DEPLOY_DIR/Dockerfile" SERVER_DOCKER_COMPOSE_DIR="/docker" OUTPUT_APP="./app" OUTPUT_ENV="./.env" OUTPUT_DOCKERFILE="./Dockerfile" # 本地打包 bash ./build.sh # 检查远程目录是否存在 ssh -p $SERVER_SSH_PORT $SERVER_USER@$SERVER_IP \ " if [ ! -d ${SERVER_DEPLOY_DIR} ]; then sudo mkdir -p ${SERVER_DEPLOY_DIR}; fi " # 删除app文件 ssh -p $SERVER_SSH_PORT $SERVER_USER@$SERVER_IP \ " sudo rm -rf $SERVER_DEPLOY_APP; " # 将应用文件上传到服务器(使用rsync+sudo) rsync -avz -e "ssh -p $SERVER_SSH_PORT" \ $OUTPUT_APP \ $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_APP \ --rsync-path="sudo rsync" # 将环境文件上传到服务器 rsync -avz -e "ssh -p $SERVER_SSH_PORT" \ $OUTPUT_ENV \ $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_ENV \ --rsync-path="sudo rsync" # 将Dockerfile上传到服务器 rsync -avz -e "ssh -p $SERVER_SSH_PORT" \ $OUTPUT_DOCKERFILE \ $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_DOCKER_FILE \ --rsync-path="sudo rsync" # # 将文件上传到服务器 # scp -r -P $SERVER_SSH_PORT \ # $OUTPUT_APP \ # $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_APP # scp -r -P $SERVER_SSH_PORT \ # $OUTPUT_ENV \ # $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_ENV # scp -r -P $SERVER_SSH_PORT \ # $OUTPUT_DOCKERFILE \ # $SERVER_USER@$SERVER_IP:$SERVER_DEPLOY_DOCKER_FILE # 构建Docker等部署 ssh -p $SERVER_SSH_PORT $SERVER_USER@$SERVER_IP \ " cd ${SERVER_DOCKER_COMPOSE_DIR}; sudo docker build -t $APP_NAME --no-cache ${SERVER_DEPLOY_DIR} sudo docker compose stop $APP_NAME sudo docker compose rm -f $APP_NAME sudo docker compose up -d $APP_NAME "