- академический отпуск: readOnly, запрет submit/start/finish защиты - черновики лабораторных скрыты от студентов в списке/деталях/по UUID - удалено действие «Убрать из группы» из UI и API - импорт: restoreInactiveStatuses, skipped-отчёт, разблокировка архивного аккаунта - глобальные материалы STUDENTS/TEACHERS с JWT-фильтрацией и сменой аудитории - LDD-AUTH-005 переведён на unit-evidence, clean check проходит по P0 - backup: безопасный парсинг .env, verify-latest, кавычки cron - robots/noindex, комментарии без автора, профиль без черновиков - docs/18-goal-audit.md; baseline 57 claims / 366 тестов / release PASS
75 lines
2.4 KiB
Bash
Executable File
75 lines
2.4 KiB
Bash
Executable File
#!/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 ">> Резервная копия перед обновлением (обязательно)..."
|
||
./deploy/backup.sh backup --if-running
|
||
./deploy/backup.sh verify-latest
|
||
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:-}"
|
||
;;
|
||
backup)
|
||
./deploy/backup.sh backup
|
||
;;
|
||
backups)
|
||
./deploy/backup.sh list
|
||
;;
|
||
verify)
|
||
./deploy/backup.sh verify "${2:-}"
|
||
;;
|
||
restore)
|
||
./deploy/backup.sh restore "${2:-}"
|
||
;;
|
||
*)
|
||
echo "usage: $0 [up|ps|logs <service>|restart [service]|down|backup|backups|verify <dir>|restore <dir>]" >&2
|
||
exit 1
|
||
;;
|
||
esac
|