# Документация по 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