8e766b540e
- sites.yml — единый источник истины для всех сайтов - generate-configs.sh — генератор nginx конфигов, certbot domains.txt, .env - nginx: per-domain HTTPS (вместо all-or-nothing switch-config) - certbot: единый renew-all.sh, динамический init (без 5 дублирующих скриптов) - backup: контейнер с pg_dump + rclone (Яндекс.Диск), ежедневно в 3AM - Gitea + Gitea Runner в docker-compose (self-hosted Git + CI/CD) - .gitea/workflows/deploy.yml — CI/CD pipeline: push → авто-деплой - Makefile: generate-configs, reconfig, deploy, backup, restore, gitea, help
357 lines
11 KiB
Makefile
357 lines
11 KiB
Makefile
# Основная цель - выполняет полный цикл обновления и перезапуска всех сервисов
|
|
all: stop_all git build_all start_all wat
|
|
|
|
# Перезапуск всех сервисов и мониторинг состояния
|
|
restart_all:
|
|
docker compose restart && wat
|
|
|
|
# Полная остановка всех сервисов
|
|
stop_all:
|
|
docker compose down
|
|
|
|
# Полная пересборка всех сервисов без кэша
|
|
build_all:
|
|
docker compose build --no-cache
|
|
|
|
# Запуск всех сервисов в фоновом режиме
|
|
start_all:
|
|
docker compose up -d
|
|
|
|
# Целевая команда для обновления сервиса api_bb
|
|
api_bb: stop_bb git build_bb run_bb wn
|
|
|
|
# Обновление кода из git репозитория
|
|
git:
|
|
git pull
|
|
|
|
# Остановка только сервиса api_bb
|
|
stop_bb:
|
|
docker compose down api_bb
|
|
|
|
# Пересборка только сервиса api_bb
|
|
build_bb:
|
|
docker compose build api_bb --no-cache
|
|
|
|
# Запуск только сервиса api_bb в фоновом режиме
|
|
run_bb:
|
|
docker compose up api_bb -d
|
|
|
|
# Подключение к базе данных Бегущий Башкир через psql
|
|
bb_db:
|
|
docker exec -it serv_nginx-db-1 sh -c "psql -U postgres -d bb_db
|
|
|
|
# Просмотр логов api_bb в реальном времени
|
|
api_bb_logs:
|
|
docker logs api_bb -f
|
|
|
|
# Перезапуск всех сервисов (альтернативная команда)
|
|
restart:
|
|
docker compose down && docker compose up -d
|
|
|
|
# Очистка кэша npm
|
|
npm_clean:
|
|
npm cache clean --force
|
|
|
|
# Сборка фронтенда Бегущий Башкир
|
|
bbvue: git
|
|
cd BB/bbvue && npm run build
|
|
|
|
# Полный цикл обновления фронтенда Бегущий Башкир
|
|
vue_bb: git npm_clean bbvue wn
|
|
|
|
# Остановка nginx
|
|
stop_nginx:
|
|
docker compose down nginx
|
|
|
|
# Пересборка nginx
|
|
build_nginx:
|
|
docker compose build nginx --no-cache
|
|
|
|
# Запуск nginx
|
|
start_nginx:
|
|
docker compose up nginx -d
|
|
|
|
# Просмотр логов nginx в реальном времени
|
|
logs_nginx:
|
|
docker logs nginx -f
|
|
|
|
# Полный цикл обновления nginx
|
|
nginx: stop_nginx git build_nginx start_nginx logs_nginx
|
|
|
|
# Остановка всех сервисов (альтернативная команда)
|
|
stop:
|
|
docker compose down
|
|
|
|
# Пересборка всех сервисов (альтернативная команда)
|
|
build:
|
|
docker compose build --no-cache
|
|
|
|
# Запуск всех сервисов (альтернативная команда)
|
|
start:
|
|
docker compose up -d --remove-orphans
|
|
|
|
# Полный перезапуск (альтернативная команда)
|
|
re_all: stop git build start
|
|
|
|
# Остановка Keycloak
|
|
stop_kk:
|
|
docker compose down keycloak
|
|
|
|
# Пересборка Keycloak
|
|
build_kk:
|
|
docker compose build keycloak --no-cache
|
|
|
|
# Запуск Keycloak
|
|
start_kk:
|
|
docker compose up keycloak -d
|
|
|
|
# Просмотр логов Keycloak в реальном времени
|
|
logs_kk:
|
|
docker logs keycloak -f
|
|
|
|
# Быстрый перезапуск Keycloak
|
|
re_kk: git stop_kk start_kk
|
|
|
|
# Полный цикл обновления Keycloak
|
|
keycloak: git stop_kk build_kk start_kk logs_kk
|
|
|
|
# Сборка easysite с логированием в файл
|
|
build_es_log:
|
|
docker-compose build --no-cache easysite 2>&1 | tee build.log
|
|
|
|
# Детальная сборка easysite с прогрессом
|
|
build_es_log_all:
|
|
docker-compose build --no-cache --progress=plain easysite
|
|
|
|
# Просмотр логов easysite в реальном времени
|
|
easysite_logs:
|
|
docker logs easysite -f
|
|
|
|
# Остановка easysite
|
|
easysite_stop:
|
|
docker compose down easysite
|
|
|
|
# Пересборка easysite
|
|
easysite_build:
|
|
docker compose build easysite --no-cache
|
|
|
|
# Запуск easysite с проверкой состояния
|
|
easysite_start:
|
|
docker compose up easysite -d && docker ps
|
|
|
|
# all
|
|
easysite: easysite_stop git easysite_build easysite_start easysite_logs
|
|
|
|
# Мониторинг системных ресурсов
|
|
top:
|
|
htop
|
|
|
|
# Полный цикл обновления easysite
|
|
es: easysite_stop git easysite_build easysite_start wn
|
|
|
|
# Остановка analytics
|
|
stop_analitics:
|
|
docker compose down analytics
|
|
|
|
# Пересборка analytics
|
|
build_analititcs:
|
|
docker compose build analytics --no-cache
|
|
|
|
# Запуск analytics с проверкой состояния
|
|
start_analytics:
|
|
docker compose up analytics -d && docker ps
|
|
|
|
# Быстрый перезапуск analytics
|
|
restart_analytics:
|
|
docker compose restart analytics
|
|
|
|
# Полный цикл обновления analytics
|
|
analytics: stop_analitics git build_analititcs start_analytics wn
|
|
|
|
# Остановка certbot
|
|
stop_cerbot:
|
|
docker compose down certbot
|
|
|
|
# Пересборка certbot
|
|
build_certbot:
|
|
docker compose build certbot --no-cache
|
|
|
|
# Запуск certbot
|
|
start_certbot:
|
|
docker compose up certbot -d
|
|
|
|
# Полный цикл обновления certbot
|
|
certbot: stop_cerbot git build_certbot start_certbot wat
|
|
|
|
# Сборка фронтенда valitovgaziz
|
|
valitovgaziz_build_spa: git
|
|
cd valitovgaziz && npm run build
|
|
|
|
# Остановка valitovgaziz
|
|
stop_valitovgaziz:
|
|
docker compose down valitovgaziz
|
|
|
|
# Пересборка valitovgaziz
|
|
build_valitovgaziz:
|
|
docker compose build valitovgaziz --no-cache
|
|
|
|
# Запуск valitovgaziz
|
|
start_valitovgaziz:
|
|
docker compose up valitovgaziz -d
|
|
|
|
# Полный цикл обновления valitovgaziz
|
|
valitovgaziz: stop_valitovgaziz git build_valitovgaziz start_valitovgaziz wn
|
|
|
|
# Сборка SPA + полный цикл обновления valitovgaziz
|
|
vue_site: valitovgaziz_build_spa stop_valitovgaziz build_valitovgaziz start_valitovgaziz wn
|
|
|
|
# Мониторинг состояния контейнеров каждые 2 секунды
|
|
wn:
|
|
watch -n 2 'docker ps'
|
|
|
|
# Остановка api_yal
|
|
stop_api_yal:
|
|
docker compose down api_yal
|
|
|
|
# Пересборка api_yal
|
|
build_api_yal:
|
|
docker compose build api_yal --no-cache
|
|
|
|
# Запуск api_yal
|
|
start_api_yal:
|
|
docker compose up api_yal -d
|
|
|
|
# Полный цикл обновления api_yal
|
|
api_yal: stop_api_yal git build_api_yal start_api_yal wn
|
|
|
|
# Остановка yalarba-nuxt
|
|
stop_yalarba:
|
|
docker compose down yalarba
|
|
|
|
# Пересборка yalarba-nuxt
|
|
build_yalarba:
|
|
docker compose build yalarba --no-cache
|
|
|
|
# Запуск yalarba-nuxt
|
|
start_yalarba:
|
|
docker compose up yalarba -d
|
|
|
|
# Полный цикл обновления yalarba-nuxt
|
|
yalarba: stop_yalarba git build_yalarba start_yalarba wn
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# НОВЫЕ ЦЕЛИ: generate-configs, deploy, backup
|
|
# ═══════════════════════════════════════════════
|
|
|
|
# Генерация конфигов из sites.yml
|
|
generate-configs:
|
|
bash generate-configs.sh
|
|
|
|
# Генерация + рестарт nginx
|
|
reconfig: generate-configs
|
|
docker compose restart nginx
|
|
$(MAKE) wn
|
|
|
|
# Авто-детект изменённых сервисов и деплой только их
|
|
deploy: git
|
|
@echo "=== Detecting changes ==="
|
|
@CHANGED=$$(git diff --name-only HEAD~1 HEAD | grep -oP 'main_dc/\K[^/]+' | sort -u); \
|
|
for svc in $$CHANGED; do \
|
|
case "$$svc" in \
|
|
BB) name="api_bb" ;; \
|
|
certbot) name="certbot" ;; \
|
|
backup) name="backup" ;; \
|
|
gitea) name="gitea" ;; \
|
|
*) name="$$svc" ;; \
|
|
esac; \
|
|
if grep -q "^ $$name:" docker-compose.yml 2>/dev/null; then \
|
|
echo " → Rebuilding $$name..."; \
|
|
$(MAKE) stop_$$name build_$$name start_$$name 2>/dev/null || \
|
|
$(MAKE) stop_$$svc build_$$svc start_$$svc 2>/dev/null || true; \
|
|
fi; \
|
|
done; \
|
|
if echo "$$CHANGED" | grep -q 'sites.yml\|nginx'; then \
|
|
echo " → Regenerating configs..."; \
|
|
bash generate-configs.sh; \
|
|
docker compose restart nginx; \
|
|
fi
|
|
|
|
# Ручной запуск бэкапа
|
|
backup:
|
|
docker compose exec backup /opt/backup.sh
|
|
|
|
# Ручной запуск бэкапа (разовый контейнер)
|
|
backup-run:
|
|
docker compose run --rm backup /opt/backup.sh
|
|
|
|
# Восстановление из бэкапа: make restore [DATE=2026-06-11]
|
|
restore:
|
|
docker compose run --rm backup /opt/restore.sh $(DATE)
|
|
|
|
# Gitea — полный цикл обновления
|
|
gitea: stop_gitea git build_gitea start_gitea wn
|
|
|
|
stop_gitea:
|
|
docker compose down gitea
|
|
|
|
build_gitea:
|
|
docker compose build gitea --no-cache
|
|
|
|
start_gitea:
|
|
docker compose up gitea -d
|
|
|
|
# Gitea Runner — полный цикл
|
|
gitea-runner: stop_gitea-runner git build_gitea-runner start_gitea-runner wn
|
|
|
|
stop_gitea-runner:
|
|
docker compose down gitea-runner
|
|
|
|
build_gitea-runner:
|
|
docker compose build gitea-runner --no-cache
|
|
|
|
start_gitea-runner:
|
|
docker compose up gitea-runner -d
|
|
|
|
# Gitea first-time setup helper
|
|
gitea-setup:
|
|
@echo "=== Gitea Setup ==="
|
|
@echo "1. Open http://94.41.23.97:3001 in browser"
|
|
@echo "2. Complete initial setup (DB: SQLite3 is fine)"
|
|
@echo "3. Create admin user"
|
|
@echo "4. Create new repository 'tp' and push:"
|
|
@echo " git remote add gitea http://94.41.23.97:3001/USER/tp.git"
|
|
@echo " git push -u gitea main"
|
|
@echo "5. Register runner:"
|
|
@echo " Settings → Actions → Runners → Create Token"
|
|
@echo " Update GITEA_RUNNER_REGISTRATION_TOKEN in docker-compose.yml"
|
|
@echo " Then: docker compose up -d gitea-runner"
|
|
@echo "6. Add secrets in repo Settings → Actions → Secrets:"
|
|
@echo " (none needed — runner runs locally)"
|
|
|
|
# Показать все доступные цели
|
|
help:
|
|
@echo "=== Make targets ==="
|
|
@echo ""
|
|
@echo "Site management:"
|
|
@echo " generate-configs — generate nginx configs from sites.yml"
|
|
@echo " reconfig — generate configs + restart nginx"
|
|
@echo ""
|
|
@echo "Deploy:"
|
|
@echo " all — full cycle all services"
|
|
@echo " deploy — auto-detect changes, rebuild only changed"
|
|
@echo " <service> — full cycle for one service"
|
|
@echo ""
|
|
@echo "Backup:"
|
|
@echo " backup — run backup via running container"
|
|
@echo " backup-run — run backup in one-shot container"
|
|
@echo " restore DATE=... — restore from backup"
|
|
@echo ""
|
|
@echo "Gitea:"
|
|
@echo " gitea — full cycle Gitea"
|
|
@echo " gitea-runner — full cycle Runner"
|
|
@echo " gitea-setup — first-time setup instructions"
|
|
@echo ""
|
|
@echo "Monitoring:"
|
|
@echo " wn — watch docker ps"
|
|
@echo " logs_<service> — logs for a service"
|
|
@echo " bb_db — psql into bb_db"
|