Files
tp/main_dc/Makefile
T
valitovgaziz 8e766b540e feat: CI/CD, per-domain HTTPS, backup, config generator
- 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
2026-06-12 12:22:19 +05:00

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"