fix: support docker compose v1/v2 in install and update scripts

This commit is contained in:
iqubik
2026-03-26 23:40:22 +03:00
parent d414e7dc34
commit 5ab2b788fe
2 changed files with 55 additions and 7 deletions
+35 -2
View File
@@ -19,6 +19,36 @@ NC='\033[0m'
log() { echo -e "${GREEN}[INFO]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; exit 1; }
die() { error "$1"; }
resolve_compose_cmd() {
if docker compose version >/dev/null 2>&1; then
COMPOSE_CMD=("docker" "compose")
return 0
fi
if command -v docker-compose >/dev/null 2>&1; then
COMPOSE_CMD=("docker-compose")
return 0
fi
warn "Не найден Docker Compose (ни v2 plugin, ни v1 binary). Пытаемся установить..."
apt-get update
apt-get install -y docker-compose-plugin || true
if docker compose version >/dev/null 2>&1; then
COMPOSE_CMD=("docker" "compose")
return 0
fi
apt-get install -y docker-compose || true
if command -v docker-compose >/dev/null 2>&1; then
COMPOSE_CMD=("docker-compose")
return 0
fi
die "Не удалось установить Docker Compose. Установите docker compose plugin (v2) или docker-compose (v1)."
}
#################################
# ASCII-баннер
@@ -101,6 +131,9 @@ EOF
systemctl start docker
fi
resolve_compose_cmd
log "Compose команда: ${COMPOSE_CMD[*]}"
#################################
# ЗАГРУЗКА ПРОЕКТА
#################################
@@ -477,10 +510,10 @@ fi
#################################
log "Сборка и запуск контейнеров..."
# Останавливаем старые, если были
docker compose down || true
"${COMPOSE_CMD[@]}" down || true
# Запускаем сборку и старт
docker compose up --build -d --remove-orphans
"${COMPOSE_CMD[@]}" up --build -d --remove-orphans
log "Очистка кэша сборки..."
docker image prune -f
+20 -5
View File
@@ -13,6 +13,20 @@ log() { echo -e "\033[1;32m[INFO]\033[0m $1"; }
warn() { echo -e "\033[1;33m[WARN]\033[0m $1"; }
die() { echo -e "\033[1;31m[ERROR]\033[0m $1"; exit 1; }
resolve_compose_cmd() {
if docker compose version >/dev/null 2>&1; then
COMPOSE_CMD=("docker" "compose")
return 0
fi
if command -v docker-compose >/dev/null 2>&1; then
COMPOSE_CMD=("docker-compose")
return 0
fi
die "Не найден Docker Compose (ни v2 plugin, ни v1 binary)"
}
need_root() {
[[ $EUID -eq 0 ]] || die "Запускать только от root"
}
@@ -37,20 +51,21 @@ cd "$PROJECT_DIR"
# CHECK DOCKER
#################################
command -v docker >/dev/null 2>&1 || die "Docker не установлен"
docker compose version >/dev/null 2>&1 || die "docker compose v2 недоступен"
resolve_compose_cmd
log "Compose команда: ${COMPOSE_CMD[*]}"
#################################
# REBUILD BACKEND
#################################
log "Скачивание последних версий Docker-образов..."
if docker compose pull; then
if "${COMPOSE_CMD[@]}" pull; then
log "Образы успешно загружены."
else
error "Ошибка при скачивании образов. Проверьте подключение к интернету или доступность GitHub Container Registry."
die "Ошибка при скачивании образов. Проверьте подключение к интернету или доступность GitHub Container Registry."
fi
log "Пересоздание контейнеров..."
docker compose up -d
"${COMPOSE_CMD[@]}" up -d
log "Очистка старых Docker-образов (освобождение места)..."
docker image prune -f
@@ -58,4 +73,4 @@ docker image prune -f
#################################
# DONE
#################################
log "3dp-manager успешно обновлён ✅"
log "3dp-manager успешно обновлён ✅"