From 5ab2b788fe19546b45cfc3b697f02f166f819241 Mon Sep 17 00:00:00 2001 From: iqubik Date: Thu, 26 Mar 2026 23:40:22 +0300 Subject: [PATCH] fix: support docker compose v1/v2 in install and update scripts --- install.sh | 37 +++++++++++++++++++++++++++++++++++-- update.sh | 25 ++++++++++++++++++++----- 2 files changed, 55 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 59b45d0..3c45fc0 100644 --- a/install.sh +++ b/install.sh @@ -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 diff --git a/update.sh b/update.sh index a35c343..3e6c3ed 100644 --- a/update.sh +++ b/update.sh @@ -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 успешно обновлён ✅" \ No newline at end of file +log "3dp-manager успешно обновлён ✅"