#!/usr/bin/env bash # Деплой LMS в Docker на сервере. Java на хосте не требуется. # # ./deploy/deploy.sh # сборка + запуск/обновление # ./deploy/deploy.sh logs web # логи сервиса # ./deploy/deploy.sh ps # ./deploy/deploy.sh down # остановить (данные сохраняются в volume) set -euo pipefail cd "$(dirname "$0")/.." COMPOSE="docker compose -f docker-compose.prod.yml --env-file .env.prod" if ! command -v docker >/dev/null 2>&1 || ! docker compose version >/dev/null 2>&1; then echo "Ошибка: нужен Docker с плагином compose v2." >&2 exit 1 fi if [[ ! -f .env.prod ]]; then if [[ -f .env.prod.example ]]; then cp .env.prod.example .env.prod echo "Создан .env.prod из примера. ОБЯЗАТЕЛЬНО смените LMS_DB_PASSWORD и повторите запуск." >&2 exit 1 fi echo "Не найден .env.prod" >&2 exit 1 fi cmd="${1:-up}" case "$cmd" in up) echo ">> Сборка образов (Gradle внутри Docker, сервер Java не требует)..." $COMPOSE build echo ">> Запуск сервисов..." $COMPOSE up -d --remove-orphans echo $COMPOSE ps echo echo "Готово. Проверьте: curl -fsS http://127.0.0.1:${LMS_WEB_PORT:-8090}/actuator/health" echo "Первый запуск: откройте https://<домен>/setup и создайте администратора." ;; logs) $COMPOSE logs -f --tail=200 "${2:-web}" ;; ps) $COMPOSE ps ;; down) $COMPOSE down ;; restart) $COMPOSE restart "${2:-}" ;; *) echo "usage: $0 [up|ps|logs |restart [service]|down]" >&2 exit 1 ;; esac