Files
ewoooc/docker/superset/deploy.sh
OoO d6d8777e41
All checks were successful
CD Pipeline / deploy (push) Successful in 1m12s
V10.601 收斂 Gemini 與密鑰治理
2026-06-06 14:52:46 +08:00

175 lines
4.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =============================================================================
# Apache Superset 部署腳本
# MOMO Pro System - UAT 環境
# =============================================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# 顏色定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
# 顯示使用方式
usage() {
echo "使用方式: $0 [命令]"
echo ""
echo "命令:"
echo " deploy 部署 Superset (預設)"
echo " stop 停止 Superset"
echo " restart 重啟 Superset"
echo " logs 查看日誌"
echo " status 查看狀態"
echo " clean 已停用:避免誤刪 Superset 資料"
echo ""
}
# 部署 Superset
deploy() {
log_info "開始部署 Apache Superset..."
# 檢查 Docker
if ! command -v docker &> /dev/null; then
log_error "Docker 未安裝"
exit 1
fi
# 拉取映像
log_info "拉取 Docker 映像..."
docker compose pull
# 啟動服務
log_info "啟動 Superset 服務..."
docker compose up -d
# 等待健康檢查
log_info "等待服務啟動 (約 2 分鐘)..."
local max_wait=180
local waited=0
local interval=10
while [ $waited -lt $max_wait ]; do
if docker compose ps | grep -q "healthy"; then
log_success "Superset 啟動成功!"
break
fi
# 檢查是否有容器失敗
if docker compose ps | grep -q "Exit"; then
log_error "容器啟動失敗"
docker compose logs --tail=50
exit 1
fi
sleep $interval
waited=$((waited + interval))
log_info "等待中... ($waited/$max_wait 秒)"
done
if [ $waited -ge $max_wait ]; then
log_warn "等待超時,請手動檢查服務狀態"
docker compose ps
fi
# 顯示訪問資訊
echo ""
log_success "=========================================="
log_success "Apache Superset 部署完成!"
log_success "=========================================="
echo ""
echo "內部訪問: http://127.0.0.1:8088"
echo "外部訪問: https://monitor.wooo.work/superset/"
echo ""
echo "登入帳號: admin"
echo "登入密碼: <SUPERSET_ADMIN_PASSWORD>"
echo ""
echo "下一步:"
echo " 1. 設定 Nginx 反向代理"
echo " 2. 新增資料庫連線 (UAT/GCP)"
echo " 3. 建立資料集和儀表板"
echo ""
}
# 停止服務
stop() {
log_info "停止 Superset 服務..."
docker compose stop
log_success "服務已停止"
}
# 重啟服務
restart() {
log_info "重啟 Superset 服務..."
docker compose restart
log_success "服務已重啟"
}
# 查看日誌
logs() {
docker compose logs -f --tail=100
}
# 查看狀態
status() {
echo ""
log_info "Superset 服務狀態:"
echo ""
docker compose ps
echo ""
# 檢查健康狀態
if docker compose ps | grep -q "healthy"; then
log_success "所有服務運行正常"
elif docker compose ps | grep -q "unhealthy"; then
log_warn "有服務不健康"
fi
}
# 清除所有資料
clean() {
log_error "clean 已停用:資料清除必須先完成備份與人工審核"
log_error "如需重建 Superset請先匯出儀表板、確認 volume 名稱,再由維運人員手動處理"
exit 1
}
# 主程式
case "${1:-deploy}" in
deploy)
deploy
;;
stop)
stop
;;
restart)
restart
;;
logs)
logs
;;
status)
status
;;
clean)
clean
;;
-h|--help)
usage
;;
*)
log_error "未知命令: $1"
usage
exit 1
;;
esac