diff --git a/backup.sh b/backup.sh index 2f54740..02d3da0 100755 --- a/backup.sh +++ b/backup.sh @@ -3,6 +3,10 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + # 備份目錄 BACKUP_DIR="./backups" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") @@ -16,7 +20,7 @@ echo "" # 1. 備份資料庫 echo "📦 備份 PostgreSQL 資料庫..." -docker-compose exec -T database pg_dump -U codimd codimd > "$BACKUP_DIR/database_$TIMESTAMP.sql" +docker_compose exec -T database pg_dump -U codimd codimd > "$BACKUP_DIR/database_$TIMESTAMP.sql" if [ $? -eq 0 ]; then DB_SIZE=$(du -h "$BACKUP_DIR/database_$TIMESTAMP.sql" | cut -f1) @@ -56,7 +60,7 @@ CodiMD 備份資訊 - 環境設定: env_$TIMESTAMP.env 還原方式: -1. 資料庫: cat database_$TIMESTAMP.sql | docker-compose exec -T database psql -U codimd codimd +1. 資料庫: cat database_$TIMESTAMP.sql | docker_compose exec -T database psql -U codimd codimd 2. 上傳檔案: tar -xzf uploads_$TIMESTAMP.tar.gz 3. 環境設定: cp env_$TIMESTAMP.env .env EOF diff --git a/cleanup.sh b/cleanup.sh index 8733cfc..0e5ccc9 100755 --- a/cleanup.sh +++ b/cleanup.sh @@ -3,6 +3,10 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + echo "🧹 清理 Docker 資源..." echo "" diff --git a/docker-compose-helper.sh b/docker-compose-helper.sh new file mode 100644 index 0000000..69e2052 --- /dev/null +++ b/docker-compose-helper.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Docker Compose 輔助函數 +# 自動檢測使用 docker-compose 或 docker compose + +# 檢測並設定 docker compose 命令 +DOCKER_COMPOSE_CMD="" + +if command -v docker-compose &> /dev/null; then + # Docker Compose V1 (獨立命令) + DOCKER_COMPOSE_CMD="docker-compose" +elif docker compose version &> /dev/null 2>&1; then + # Docker Compose V2 (docker plugin) + DOCKER_COMPOSE_CMD="docker compose" +else + echo "❌ 找不到 Docker Compose" + echo "請安裝 Docker Compose:" + echo " V1: https://docs.docker.com/compose/install/" + echo " V2: 已包含在 Docker Desktop 中" + exit 1 +fi + +# 執行 docker compose 命令的函數 +docker_compose() { + $DOCKER_COMPOSE_CMD "$@" +} diff --git a/logs.sh b/logs.sh index 942be9f..2ee7fc3 100755 --- a/logs.sh +++ b/logs.sh @@ -1,9 +1,13 @@ #!/bin/bash # CodiMD 日誌查看腳本 +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + SERVICE=${1:-codimd} echo "📋 顯示 $SERVICE 服務日誌(按 Ctrl+C 離開)..." echo "" -docker-compose logs -f "$SERVICE" +docker_compose logs -f "$SERVICE" diff --git a/restart.sh b/restart.sh index 1c24e94..f14c7e6 100755 --- a/restart.sh +++ b/restart.sh @@ -3,10 +3,14 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + echo "🔄 重啟 CodiMD 服務..." # 重啟服務 -docker-compose restart +docker_compose restart echo "" echo "⏳ 等待服務完全啟動..." @@ -15,7 +19,7 @@ sleep 5 # 顯示服務狀態 echo "" echo "📊 服務狀態:" -docker-compose ps +docker_compose ps echo "" echo "✅ CodiMD 已重啟" diff --git a/restore.sh b/restore.sh index faefca7..c6ab320 100755 --- a/restore.sh +++ b/restore.sh @@ -3,6 +3,10 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + BACKUP_DIR="./backups" echo "🔄 CodiMD 還原腳本" @@ -43,7 +47,7 @@ echo "🔄 開始還原..." # 1. 還原資料庫 echo "📦 還原資料庫..." -docker-compose exec -T database psql -U codimd codimd < "$BACKUP_DIR/$BACKUP_FILE" +docker_compose exec -T database psql -U codimd codimd < "$BACKUP_DIR/$BACKUP_FILE" if [ $? -eq 0 ]; then echo "✅ 資料庫還原完成" diff --git a/start.sh b/start.sh index 5848581..0caa8f2 100755 --- a/start.sh +++ b/start.sh @@ -3,7 +3,12 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + echo "🚀 啟動 CodiMD 服務..." +echo " 使用: $DOCKER_COMPOSE_CMD" # 檢查 .env 是否存在 if [ ! -f .env ]; then @@ -23,7 +28,7 @@ if ! docker info > /dev/null 2>&1; then fi # 啟動服務 -docker-compose up -d +docker_compose up -d echo "" echo "⏳ 等待服務啟動..." @@ -32,7 +37,7 @@ sleep 5 # 顯示服務狀態 echo "" echo "📊 服務狀態:" -docker-compose ps +docker_compose ps echo "" echo "✅ CodiMD 已啟動!" diff --git a/status.sh b/status.sh index c86e818..4fe91c9 100755 --- a/status.sh +++ b/status.sh @@ -1,16 +1,20 @@ #!/bin/bash # CodiMD 狀態檢查腳本 +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + echo "🔍 檢查 CodiMD 服務狀態..." echo "" # 顯示容器狀態 echo "📊 Docker 容器狀態:" -docker-compose ps +docker_compose ps echo "" # 檢查服務是否正常 -if docker-compose ps | grep -q "Up (healthy)"; then +if docker_compose ps | grep -q "Up (healthy)"; then echo "✅ 所有服務運行正常" else echo "⚠️ 部分服務可能未正常運行" @@ -20,7 +24,7 @@ echo "" # 顯示最近日誌 echo "📋 最近日誌(最後 20 行):" -docker-compose logs --tail=20 +docker_compose logs --tail=20 echo "" # 檢查磁碟空間 diff --git a/stop.sh b/stop.sh index 7e193d3..c9935bb 100755 --- a/stop.sh +++ b/stop.sh @@ -3,10 +3,14 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + echo "🛑 停止 CodiMD 服務..." # 停止服務 -docker-compose down +docker_compose down echo "" echo "✅ CodiMD 已停止" diff --git a/update.sh b/update.sh index d955100..a3febdc 100755 --- a/update.sh +++ b/update.sh @@ -3,6 +3,10 @@ set -e +# 載入 docker compose 輔助函數 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/docker-compose-helper.sh" + echo "🔄 更新 CodiMD..." echo "" @@ -13,7 +17,7 @@ echo "" # 2. 拉取最新映像 echo "📥 拉取最新 Docker 映像..." -docker-compose pull +docker_compose pull echo "" # 3. 詢問是否重啟 @@ -21,8 +25,8 @@ read -p "是否現在重啟服務以套用更新?(yes/no): " RESTART if [ "$RESTART" = "yes" ]; then echo "🔄 重啟服務..." - docker-compose down - docker-compose up -d + docker_compose down + docker_compose up -d echo "" echo "⏳ 等待服務啟動..." @@ -30,7 +34,7 @@ if [ "$RESTART" = "yes" ]; then echo "" echo "📊 服務狀態:" - docker-compose ps + docker_compose ps echo "" echo "✅ 更新完成!"