Merge pull request 'fix: 修复 deploy 工作流缺少 Node.js 导致 checkout 失败的问题' #72
91
deploy.sh
Executable file
91
deploy.sh
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
# 颜色输出
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||
error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
|
||||
|
||||
# 确保 .env 存在
|
||||
ensure_env() {
|
||||
if [ ! -f .env ]; then
|
||||
if [ -f .env.example ]; then
|
||||
warn ".env 文件不存在,从 .env.example 复制模板"
|
||||
cp .env.example .env
|
||||
warn "请编辑 .env 填入实际的 API Key,然后重新运行"
|
||||
exit 1
|
||||
else
|
||||
error ".env.example 也不存在,请手动创建 .env"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
cmd_build() {
|
||||
info "构建 Docker 镜像..."
|
||||
docker compose build
|
||||
info "构建完成"
|
||||
}
|
||||
|
||||
cmd_up() {
|
||||
ensure_env
|
||||
info "启动服务..."
|
||||
docker compose up -d
|
||||
info "服务已启动"
|
||||
info "前端: http://localhost"
|
||||
info "健康检查: http://localhost/api/health"
|
||||
}
|
||||
|
||||
cmd_down() {
|
||||
info "停止服务..."
|
||||
docker compose down
|
||||
info "服务已停止"
|
||||
}
|
||||
|
||||
cmd_restart() {
|
||||
info "重启服务..."
|
||||
cmd_down
|
||||
cmd_up
|
||||
}
|
||||
|
||||
cmd_logs() {
|
||||
docker compose logs -f "${@}"
|
||||
}
|
||||
|
||||
cmd_status() {
|
||||
docker compose ps
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
CamTalk 部署脚本
|
||||
|
||||
用法: $0 <命令>
|
||||
|
||||
命令:
|
||||
build 构建 Docker 镜像
|
||||
up 启动服务(后台运行)
|
||||
down 停止服务
|
||||
restart 重启服务
|
||||
logs 查看日志(可加服务名,如: $0 logs backend)
|
||||
status 查看服务状态
|
||||
EOF
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
build) cmd_build ;;
|
||||
up) cmd_up ;;
|
||||
down) cmd_down ;;
|
||||
restart) cmd_restart ;;
|
||||
logs) shift; cmd_logs "$@" ;;
|
||||
status) cmd_status ;;
|
||||
*) usage; exit 1 ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user