cola-web/deploy-gy.sh

69 lines
1.7 KiB
Bash

#!/bin/bash
# 加载配置
if [ -f "./deploy.config.sh" ]; then
source ./deploy.config.sh
else
echo "配置文件 deploy.config.sh 不存在"
exit 1
fi
echo "开始远程部署 - $(date)"
echo "开始部署您的项目..."
# 1. 克隆项目代码
# echo "1. 克隆项目代码..."
# git clone https://git.zhouxhere.com/wonderzhao/cola-web.git
# 2. 进入项目目录
# echo "2. 进入项目目录..."
# cd cola-web
# 3. 安装依赖
# echo "3. 安装依赖..."
# npm install
# 4. 构建项目
echo "4. 构建项目..."
npm run build
# 5. 构建 Docker 镜像
echo "5. 构建 Docker 镜像..."
docker build -t ${DOCKER_IMAGE_NAME} .
# 6. 保存镜像为 tar 文件
echo "6. 保存 Docker 镜像..."
docker save ${DOCKER_IMAGE_NAME} > ${DOCKER_IMAGE_NAME}.tar
# 7. 传输文件到服务器
echo "7. 传输文件到服务器..."
# ssh -p 22 owner@192.168.1.199
scp -v -P ${REMOTE_PORT} ${DOCKER_IMAGE_NAME}.tar ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/
# 8. 在远程服务器上执行部署
echo "8. 在远程服务器上执行部署..."
ssh -p ${REMOTE_PORT} ${REMOTE_USER}@${REMOTE_HOST} << EOF
set -e # 遇到错误立即退出
echo "===== 开始执行远程部署 ====="
cd ${REMOTE_PATH}
docker load < ${DOCKER_IMAGE_NAME}.tar
docker stop ${DOCKER_CONTAINER_NAME} 2>/dev/null || true
docker rm ${DOCKER_CONTAINER_NAME} 2>/dev/null || true
docker run -d \
--name ${DOCKER_CONTAINER_NAME} \
-p ${APP_PORT}:80 \
--restart unless-stopped \
${DOCKER_IMAGE_NAME}
EOF
echo "部署完成!"
# echo "部署完成!"
# 10. 检查部署状态
# echo "10. 检查部署状态..."
# ssh owner@192.168.1.199 "docker ps | grep cola-web"
# 在另一个终端窗口查看日志
# tail -f deploy.log