All checks were successful
Update service runner / deploy (push) Successful in 21s
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 сервисы (обновляются при изменении в соответствующих директориях):
-
PROD Frontend - обновляется при изменениях в
services/prod/frontend/- Удаляет старый контейнер
smart-search-frontend - Пересоздает контейнер из
docker-compose.frontend-prod.yml
- Удаляет старый контейнер
-
PROD Backend - обновляется при изменениях в
services/prod/backend/- Удаляет старый контейнер
smart-search-backend - Пересоздает контейнер из
docker-compose.backend-prod.yml
- Удаляет старый контейнер
-
PROD Gateway - обновляется при изменениях в
services/prod/gateway/- Удаляет старый контейнер
smart-search-gateway - Пересоздает контейнер из
docker-compose.gateway-prod.yml
- Удаляет старый контейнер
🧪 Test сервисы (обновляются при изменениях в соответствующих директориях):
-
TEST Frontend - обновляется при изменениях в
services/test/frontend/- Удаляет старый контейнер
smart-search-frontend-test - Пересоздает контейнер из
docker-compose.frontend-test.yml
- Удаляет старый контейнер
-
TEST Backend - обновляется при изменениях в
services/test/backend/- Удаляет старый контейнер
smart-search-backend-test - Пересоздает контейнер из
docker-compose.backend-test.yml
- Удаляет старый контейнер
-
TEST Gateway - обновляется при изменениях в
services/test/gateway/- Удаляет старый контейнер
smart-search-gateway-test - Пересоздает контейнер из
docker-compose.gateway-test.yml
- Удаляет старый контейнер
⚙️ Процесс деплоя
- При пуше в
mainзапускается CI/CD pipeline - Система определяет измененные файлы через
git diff - Для каждого измененного компонента:
- Удаляется старый Docker контейнер
- Запускается новый контейнер с последними изменениями
- Все операции выполняются через SSH на целевой сервер
📋 Переменные окружения
Для работы системы необходим файл .env со следующими переменными (пример в .env.example):
- Домены и поддомены
- Настройки баз данных
- Конфигурация VPN
- Токены для Gitea runners
- Настройки безопасности
🛠️ Использование
Локальный запуск
# Копируем пример конфигурации
cp .env.example .env
# Редактируем .env файл под свои нужды
# Запуск всей инфраструктуры
docker compose up -d
🔍 Мониторинг
- Grafana: http://localhost:3000 (визуализация метрик)
- cAdvisor: http://localhost:8080 (мониторинг контейнеров)
- n8n: https://n8n.techease.ru (workflow автоматизация)
- Gitea: http://git.techease.ru:3001 (Git репозитории)
📁 Важные особенности
- Интеллектуальный деплой: Только измененные компоненты пересоздаются
- Автоматические SSL: Traefik управляет Let's Encrypt сертификатами
- Proxy цепочка: VPN → Privoxy → n8n для обхода ограничений
- Мониторинг: Prometheus + Grafana для наблюдения за системой
- CI/CD: Автоматические обновления при пуше в main ветку
Description