fix: add Docker Compose V2 support for all management scripts
Add docker-compose-helper.sh to auto-detect and use: - docker-compose (V1 - standalone) - docker compose (V2 - plugin) Update all 9 management scripts to use the helper: - start.sh, stop.sh, restart.sh - logs.sh, status.sh - backup.sh, restore.sh, update.sh, cleanup.sh This fixes "docker-compose: command not found" error on systems with Docker Compose V2 installed. Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
# 備份目錄
|
# 備份目錄
|
||||||
BACKUP_DIR="./backups"
|
BACKUP_DIR="./backups"
|
||||||
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||||
@@ -16,7 +20,7 @@ echo ""
|
|||||||
|
|
||||||
# 1. 備份資料庫
|
# 1. 備份資料庫
|
||||||
echo "📦 備份 PostgreSQL 資料庫..."
|
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
|
if [ $? -eq 0 ]; then
|
||||||
DB_SIZE=$(du -h "$BACKUP_DIR/database_$TIMESTAMP.sql" | cut -f1)
|
DB_SIZE=$(du -h "$BACKUP_DIR/database_$TIMESTAMP.sql" | cut -f1)
|
||||||
@@ -56,7 +60,7 @@ CodiMD 備份資訊
|
|||||||
- 環境設定: env_$TIMESTAMP.env
|
- 環境設定: 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
|
2. 上傳檔案: tar -xzf uploads_$TIMESTAMP.tar.gz
|
||||||
3. 環境設定: cp env_$TIMESTAMP.env .env
|
3. 環境設定: cp env_$TIMESTAMP.env .env
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
echo "🧹 清理 Docker 資源..."
|
echo "🧹 清理 Docker 資源..."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|||||||
25
docker-compose-helper.sh
Normal file
25
docker-compose-helper.sh
Normal file
@@ -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 "$@"
|
||||||
|
}
|
||||||
6
logs.sh
6
logs.sh
@@ -1,9 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# CodiMD 日誌查看腳本
|
# CodiMD 日誌查看腳本
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
SERVICE=${1:-codimd}
|
SERVICE=${1:-codimd}
|
||||||
|
|
||||||
echo "📋 顯示 $SERVICE 服務日誌(按 Ctrl+C 離開)..."
|
echo "📋 顯示 $SERVICE 服務日誌(按 Ctrl+C 離開)..."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
docker-compose logs -f "$SERVICE"
|
docker_compose logs -f "$SERVICE"
|
||||||
|
|||||||
@@ -3,10 +3,14 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
echo "🔄 重啟 CodiMD 服務..."
|
echo "🔄 重啟 CodiMD 服務..."
|
||||||
|
|
||||||
# 重啟服務
|
# 重啟服務
|
||||||
docker-compose restart
|
docker_compose restart
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "⏳ 等待服務完全啟動..."
|
echo "⏳ 等待服務完全啟動..."
|
||||||
@@ -15,7 +19,7 @@ sleep 5
|
|||||||
# 顯示服務狀態
|
# 顯示服務狀態
|
||||||
echo ""
|
echo ""
|
||||||
echo "📊 服務狀態:"
|
echo "📊 服務狀態:"
|
||||||
docker-compose ps
|
docker_compose ps
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✅ CodiMD 已重啟"
|
echo "✅ CodiMD 已重啟"
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
BACKUP_DIR="./backups"
|
BACKUP_DIR="./backups"
|
||||||
|
|
||||||
echo "🔄 CodiMD 還原腳本"
|
echo "🔄 CodiMD 還原腳本"
|
||||||
@@ -43,7 +47,7 @@ echo "🔄 開始還原..."
|
|||||||
|
|
||||||
# 1. 還原資料庫
|
# 1. 還原資料庫
|
||||||
echo "📦 還原資料庫..."
|
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
|
if [ $? -eq 0 ]; then
|
||||||
echo "✅ 資料庫還原完成"
|
echo "✅ 資料庫還原完成"
|
||||||
|
|||||||
9
start.sh
9
start.sh
@@ -3,7 +3,12 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
echo "🚀 啟動 CodiMD 服務..."
|
echo "🚀 啟動 CodiMD 服務..."
|
||||||
|
echo " 使用: $DOCKER_COMPOSE_CMD"
|
||||||
|
|
||||||
# 檢查 .env 是否存在
|
# 檢查 .env 是否存在
|
||||||
if [ ! -f .env ]; then
|
if [ ! -f .env ]; then
|
||||||
@@ -23,7 +28,7 @@ if ! docker info > /dev/null 2>&1; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 啟動服務
|
# 啟動服務
|
||||||
docker-compose up -d
|
docker_compose up -d
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "⏳ 等待服務啟動..."
|
echo "⏳ 等待服務啟動..."
|
||||||
@@ -32,7 +37,7 @@ sleep 5
|
|||||||
# 顯示服務狀態
|
# 顯示服務狀態
|
||||||
echo ""
|
echo ""
|
||||||
echo "📊 服務狀態:"
|
echo "📊 服務狀態:"
|
||||||
docker-compose ps
|
docker_compose ps
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✅ CodiMD 已啟動!"
|
echo "✅ CodiMD 已啟動!"
|
||||||
|
|||||||
10
status.sh
10
status.sh
@@ -1,16 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# CodiMD 狀態檢查腳本
|
# CodiMD 狀態檢查腳本
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
echo "🔍 檢查 CodiMD 服務狀態..."
|
echo "🔍 檢查 CodiMD 服務狀態..."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 顯示容器狀態
|
# 顯示容器狀態
|
||||||
echo "📊 Docker 容器狀態:"
|
echo "📊 Docker 容器狀態:"
|
||||||
docker-compose ps
|
docker_compose ps
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 檢查服務是否正常
|
# 檢查服務是否正常
|
||||||
if docker-compose ps | grep -q "Up (healthy)"; then
|
if docker_compose ps | grep -q "Up (healthy)"; then
|
||||||
echo "✅ 所有服務運行正常"
|
echo "✅ 所有服務運行正常"
|
||||||
else
|
else
|
||||||
echo "⚠️ 部分服務可能未正常運行"
|
echo "⚠️ 部分服務可能未正常運行"
|
||||||
@@ -20,7 +24,7 @@ echo ""
|
|||||||
|
|
||||||
# 顯示最近日誌
|
# 顯示最近日誌
|
||||||
echo "📋 最近日誌(最後 20 行):"
|
echo "📋 最近日誌(最後 20 行):"
|
||||||
docker-compose logs --tail=20
|
docker_compose logs --tail=20
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 檢查磁碟空間
|
# 檢查磁碟空間
|
||||||
|
|||||||
6
stop.sh
6
stop.sh
@@ -3,10 +3,14 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
echo "🛑 停止 CodiMD 服務..."
|
echo "🛑 停止 CodiMD 服務..."
|
||||||
|
|
||||||
# 停止服務
|
# 停止服務
|
||||||
docker-compose down
|
docker_compose down
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✅ CodiMD 已停止"
|
echo "✅ CodiMD 已停止"
|
||||||
|
|||||||
12
update.sh
12
update.sh
@@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
# 載入 docker compose 輔助函數
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source "$SCRIPT_DIR/docker-compose-helper.sh"
|
||||||
|
|
||||||
echo "🔄 更新 CodiMD..."
|
echo "🔄 更新 CodiMD..."
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
@@ -13,7 +17,7 @@ echo ""
|
|||||||
|
|
||||||
# 2. 拉取最新映像
|
# 2. 拉取最新映像
|
||||||
echo "📥 拉取最新 Docker 映像..."
|
echo "📥 拉取最新 Docker 映像..."
|
||||||
docker-compose pull
|
docker_compose pull
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 3. 詢問是否重啟
|
# 3. 詢問是否重啟
|
||||||
@@ -21,8 +25,8 @@ read -p "是否現在重啟服務以套用更新?(yes/no): " RESTART
|
|||||||
|
|
||||||
if [ "$RESTART" = "yes" ]; then
|
if [ "$RESTART" = "yes" ]; then
|
||||||
echo "🔄 重啟服務..."
|
echo "🔄 重啟服務..."
|
||||||
docker-compose down
|
docker_compose down
|
||||||
docker-compose up -d
|
docker_compose up -d
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "⏳ 等待服務啟動..."
|
echo "⏳ 等待服務啟動..."
|
||||||
@@ -30,7 +34,7 @@ if [ "$RESTART" = "yes" ]; then
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "📊 服務狀態:"
|
echo "📊 服務狀態:"
|
||||||
docker-compose ps
|
docker_compose ps
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "✅ 更新完成!"
|
echo "✅ 更新完成!"
|
||||||
|
|||||||
Reference in New Issue
Block a user