# Документация по Docker Compose проекту

## Обзор проекта

Данный проект представляет собой комплексную инфраструктуру для хостинга нескольких веб-сайтов и сервисов с использованием Docker Compose.

## Сервисы

### 1. Certbot
**Назначение**: Автоматическое получение и обновление SSL/TLS сертификатов Let's Encrypt
- **Контейнер**: `certbot`
- **Порты**: Нет внешних портов
- **Тома**:
  - `certbot_data` - данные сертификатов
  - `certbot_www` - веб-корень для проверки доменов
- **Зависимости**: Требует настройки доменов в .env файле

### 2. Nginx
**Назначение**: Веб-сервер и обратный прокси для всех сайтов
- **Контейнер**: `nginx`
- **Порты**: `80:80`, `443:443`
- **Тома**: Статические файлы всех сайтов + сертификаты Certbot
- **Зависимости**: Все остальные сервисы должны быть здоровы
- **Сети**: `web-network`, `internal`, `app-network`, `bb-network`

### 3. Analytics
**Назначение**: Система статистики для сайта valitovgaziz.ru
- **Контейнер**: `analytics`
- **Порты**: `9999:3000`
- **Технология**: Node.js 22+
- **Тома**: Логи и данные аналитики
- **Сети**: `web-network`, `internal`

### 4. API для Yalarba.ru (api_tp)
**Назначение**: REST API для бизнес-логики yalarba.ru
- **Контейнер**: `api_tp`
- **Порты**: `8888:8080`
- **Технология**: Golang (Gorm, Chi)
- **База данных**: `db` (PostgreSQL)
- **Сети**: `app-network`

### 5. Основная база данных (db)
**Назначение**: База данных для yalarba.ru и easysite102.ru
- **Контейнер**: `db_tp`
- **Порты**: `5432:5432`
- **Технология**: PostgreSQL 15
- **Тома**: `db_tp_data`
- **Миграции**: ./migrations
- **Сети**: `app-network`

### 6. API для Бегущий Башкир (api_bb)
**Назначение**: REST API для сайта Бегущий Башкир
- **Контейнер**: `api_bb`
- **Порты**: `7777:8080`
- **Технология**: Golang (Gorm, Chi)
- **База данных**: `db_bb` (PostgreSQL)
- **Тома**: Загружаемые файлы
- **Сети**: `bb-network`

### 7. База данных Бегущий Башкир (db_bb)
**Назначение**: База данных для сайта Бегущий Башкир
- **Контейнер**: `db_bb`
- **Порты**: `5433:5432`
- **Технология**: PostgreSQL 15
- **Тома**: `db_bb_data`
- **Сети**: `bb-network`

### 8. Easysite SPA
**Назначение**: Интерфейс для туристического бизнеса
- **Контейнер**: `easysite`
- **Порты**: `3000:3000`
- **Технология**: Nuxt.js
- **Сети**: `web-network`, `app-network`

### 9. API для Easysite (api_es)
**Назначение**: REST API для easysite102.ru
- **Контейнер**: `api_es`
- **Порты**: Определяется через переменную окружения
- **База данных**: `db` (общая с yalarba.ru)
- **Сети**: `app-network`, `web-network`

## Сети

- **web-network**: Для веб-сервисов, доступных извне
- **internal**: Для внутренних сервисов
- **app-network**: Для приложений yalarba.ru
- **bb-network**: Для приложений Бегущий Башкир

## Тома

- `certbot_data`, `certbot_www` - данные Certbot
- `db_tp_data`, `db_bb_data` - данные баз данных
- `api_bb_uploads` - загружаемые файлы
- `analytics_logs`, `analytics_data` - логи и данные аналитики

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

Создайте файл `.env` в корне проекта со следующими переменными:

```env
EMAIL=your-email@example.com
ALL_DOMAINS=domain1.ru,domain2.ru
API_ES_APP_PORT=8088