diff --git a/documentation/DockerComposeDocumentation.md b/documentation/DockerComposeDocumentation.md new file mode 100644 index 0000000..332c346 --- /dev/null +++ b/documentation/DockerComposeDocumentation.md @@ -0,0 +1,103 @@ +# Документация по 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 \ No newline at end of file