Nikita Nogvi 2f28c7be70
All checks were successful
Update service runner / deploy (push) Successful in 21s
Merge branch 'main' of https://git.techease.ru/Smart-search/smart-search-devops
2026-01-20 13:48:14 +03:00
2026-01-19 22:13:17 +03:00
2026-01-19 20:21:05 +03:00
2026-01-20 11:20:30 +03:00
2026-01-20 13:43:30 +03:00
fix
2026-01-19 16:12:54 +00:00
2026-01-19 21:25:17 +03:00

Smart Search DevOps

DevOps инфраструктура для проекта Smart Search с автоматическим деплоем и мониторингом.

🏗️ Структура проекта

smart-search-devops/
├── .env.example                    # Пример файла окружения
├── .gitignore                      # Игнорируемые файлы Git
├── docker-compose.yml              # Основной docker-compose файл
├── .gitea/
│   └── workflows/
│       └── deploy.yml             # CI/CD pipeline для автоматического деплоя
├── infra/
│   └── docker-compose.infra.yml   # Инфраструктурные сервисы (Traefik, cAdvisor)
├── services/
│   ├── prod/                      # Production сервисы
│   │   ├── backend/
│   │   │   └── docker-compose.backend-prod.yml
│   │   ├── frontend/
│   │   │   └── docker-compose.frontend-prod.yml
│   │   └── gateway/
│   │       └── docker-compose.gateway-prod.yml
│   └── test/                      # Тестовые сервисы
│       ├── backend/
│       │   └── docker-compose.backend-test.yml
│       ├── frontend/
│       │   └── docker-compose.frontend-test.yml
│       └── gateway/
│           └── docker-compose.gateway-test.yml
└── shared-services/
    ├── Dockerfile.privoxy         # Dockerfile для Privoxy proxy
    ├── docker-compose.shared.yml  # Общие сервисы (n8n, Prometheus, Grafana, Postgres, Gitea)
    ├── privoxy.config             # Конфигурация Privoxy
    ├── prometheus.yml             # Конфигурация Prometheus
    └── runners/
        └── docker-compose.runners.yml  # Gitea runners для CI/CD

🔧 Основные компоненты

🌐 Инфраструктура (infra/)

  • Traefik - Reverse proxy с автоматическими SSL сертификатами
  • cAdvisor - Мониторинг контейнеров (порт 8080)

🏢 Shared Services (shared-services/)

  • n8n - Автоматизация и workflow движок (порт 5678)
  • Prometheus - Система мониторинга метрик
  • Grafana - Визуализация метрик (порт 3000)
  • PostgreSQL - База данных (порт 5432)
  • Gitea - Самохостинг Git сервис (порт 3001)
  • VPN Proxy - Shadowsocks прокси для обхода ограничений
  • HTTP Proxy - Privoxy HTTP прокси
  • Gitea Runners - 4 раннера для CI/CD процессов

🎯 Сервисы приложения

Production (services/prod/)

  • Frontend - Основной фронтенд приложения (домен: techease.ru)
  • Backend - Основной бэкенд API (порт 9091)
  • Gateway - API Gateway (поддомен: back.techease.ru, порт 9093)

Test (services/test/)

  • Frontend - Тестовый фронтенд (поддомен: test.techease.ru)
  • Backend - Тестовый бэкенд API (порт 9092)
  • Gateway - Тестовый API Gateway (поддомен: back.test.techease.ru, порт 9094)

🚀 Автоматический деплой

Настроенные триггеры деплоя

Система автоматически обновляет компоненты при пуше в ветку main. В файле .gitea/workflows/deploy.yml настроены следующие правила:

🔄 Production сервисы (обновляются при изменении в соответствующих директориях):

  1. PROD Frontend - обновляется при изменениях в services/prod/frontend/

    • Удаляет старый контейнер smart-search-frontend
    • Пересоздает контейнер из docker-compose.frontend-prod.yml
  2. PROD Backend - обновляется при изменениях в services/prod/backend/

    • Удаляет старый контейнер smart-search-backend
    • Пересоздает контейнер из docker-compose.backend-prod.yml
  3. PROD Gateway - обновляется при изменениях в services/prod/gateway/

    • Удаляет старый контейнер smart-search-gateway
    • Пересоздает контейнер из docker-compose.gateway-prod.yml

🧪 Test сервисы (обновляются при изменениях в соответствующих директориях):

  1. TEST Frontend - обновляется при изменениях в services/test/frontend/

    • Удаляет старый контейнер smart-search-frontend-test
    • Пересоздает контейнер из docker-compose.frontend-test.yml
  2. TEST Backend - обновляется при изменениях в services/test/backend/

    • Удаляет старый контейнер smart-search-backend-test
    • Пересоздает контейнер из docker-compose.backend-test.yml
  3. TEST Gateway - обновляется при изменениях в services/test/gateway/

    • Удаляет старый контейнер smart-search-gateway-test
    • Пересоздает контейнер из docker-compose.gateway-test.yml

⚙️ Процесс деплоя

  1. При пуше в main запускается CI/CD pipeline
  2. Система определяет измененные файлы через git diff
  3. Для каждого измененного компонента:
    • Удаляется старый Docker контейнер
    • Запускается новый контейнер с последними изменениями
  4. Все операции выполняются через SSH на целевой сервер

📋 Переменные окружения

Для работы системы необходим файл .env со следующими переменными (пример в .env.example):

  • Домены и поддомены
  • Настройки баз данных
  • Конфигурация VPN
  • Токены для Gitea runners
  • Настройки безопасности

🛠️ Использование

Локальный запуск

# Копируем пример конфигурации
cp .env.example .env

# Редактируем .env файл под свои нужды

# Запуск всей инфраструктуры
docker compose up -d

🔍 Мониторинг

📁 Важные особенности

  • Интеллектуальный деплой: Только измененные компоненты пересоздаются
  • Автоматические SSL: Traefik управляет Let's Encrypt сертификатами
  • Proxy цепочка: VPN → Privoxy → n8n для обхода ограничений
  • Мониторинг: Prometheus + Grafana для наблюдения за системой
  • CI/CD: Автоматические обновления при пуше в main ветку
Description
No description provided
Readme 151 KiB