Files
3dp-manager/update.sh
T

77 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
#################################
# TRAP
#################################
trap 'echo -e "\033[1;31m[ERROR]\033[0m Ошибка в строке $LINENO"; exit 1' ERR
#################################
# HELPERS
#################################
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"
}
#################################
# CONFIG
#################################
PROJECT_DIR="/opt/3dp-manager"
#################################
# START
#################################
need_root
log "Обновление 3dp-manager"
[[ -d "$PROJECT_DIR" ]] || die "3dp-manager не установлен ($PROJECT_DIR не найден)"
cd "$PROJECT_DIR"
#################################
# CHECK DOCKER
#################################
command -v docker >/dev/null 2>&1 || die "Docker не установлен"
resolve_compose_cmd
log "Compose команда: ${COMPOSE_CMD[*]}"
#################################
# REBUILD BACKEND
#################################
log "Скачивание последних версий Docker-образов..."
if "${COMPOSE_CMD[@]}" pull; then
log "Образы успешно загружены."
else
die "Ошибка при скачивании образов. Проверьте подключение к интернету или доступность GitHub Container Registry."
fi
log "Пересоздание контейнеров..."
"${COMPOSE_CMD[@]}" up -d
log "Очистка старых Docker-образов (освобождение места)..."
docker image prune -f
#################################
# DONE
#################################
log "3dp-manager успешно обновлён ✅"