feat: 添加一键部署脚本 deploy.sh
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# cc-hook 一键部署脚本
|
||||
# 用法: ./deploy.sh
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
info() { echo -e "${GREEN}[✓]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
||||
error() { echo -e "${RED}[✗]${NC} $1"; exit 1; }
|
||||
|
||||
# ========== 1. 更新代码 ==========
|
||||
echo ""
|
||||
info "拉取最新代码..."
|
||||
git pull --rebase || error "git pull 失败,请检查网络或冲突"
|
||||
|
||||
# ========== 2. 环境检查 ==========
|
||||
echo ""
|
||||
info "检查运行环境..."
|
||||
|
||||
# 检查 Docker
|
||||
command -v docker &>/dev/null || error "未安装 Docker,请先安装: https://docs.docker.com/get-docker/"
|
||||
docker info &>/dev/null || error "Docker 服务未启动,请执行: sudo systemctl start docker"
|
||||
|
||||
# 检查 Docker Compose (v2 plugin 或独立二进制)
|
||||
if docker compose version &>/dev/null; then
|
||||
COMPOSE_CMD="docker compose"
|
||||
elif command -v docker-compose &>/dev/null; then
|
||||
COMPOSE_CMD="docker-compose"
|
||||
else
|
||||
error "未安装 Docker Compose,请先安装"
|
||||
fi
|
||||
info "Docker Compose: $($COMPOSE_CMD version 2>/dev/null | head -1)"
|
||||
|
||||
# 检查 .env 文件
|
||||
if [ ! -f .env ]; then
|
||||
if [ -f .env.example ]; then
|
||||
warn ".env 文件不存在,已从 .env.example 复制,请编辑后重新运行"
|
||||
cp .env.example .env
|
||||
exit 1
|
||||
else
|
||||
error ".env 文件不存在,且无 .env.example 可参考"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 校验必要的环境变量
|
||||
source .env
|
||||
[ -z "$GOTIFY_URL" ] && error ".env 中缺少 GOTIFY_URL"
|
||||
[ -z "$GOTIFY_TOKEN" ] && error ".env 中缺少 GOTIFY_TOKEN"
|
||||
info "环境检查通过"
|
||||
|
||||
# ========== 3. 构建部署 ==========
|
||||
echo ""
|
||||
info "构建并部署容器..."
|
||||
$COMPOSE_CMD up -d --build
|
||||
|
||||
# ========== 4. 部署验证 ==========
|
||||
echo ""
|
||||
info "等待服务启动..."
|
||||
sleep 3
|
||||
|
||||
PORT=${PORT#:} # 去掉前缀的冒号
|
||||
if curl -sf "http://localhost:${PORT:-8082}/health" >/dev/null 2>&1; then
|
||||
info "部署完成!服务运行正常 ✓"
|
||||
echo ""
|
||||
echo " 健康检查: http://localhost:${PORT:-8082}/health"
|
||||
echo " 查看日志: $COMPOSE_CMD logs -f cc-hook"
|
||||
echo " 停止服务: $COMPOSE_CMD down"
|
||||
else
|
||||
warn "服务可能未就绪,请检查日志: $COMPOSE_CMD logs cc-hook"
|
||||
fi
|
||||
Reference in New Issue
Block a user