# Bambolo App — Dockerized Development & Production Environment

## 📦 Структура контейнеров (Docker Compose)

| Сервис             | Назначение                                                                 |
|--------------------|----------------------------------------------------------------------------|
| `php`              | Основной PHP-FPM backend, обрабатывает web-запросы                         |
| `php-cron`         | Контейнер для выполнения cron задач (в dev-среде — неактивен)             |
| `bambolo-worker`   | Gearman-воркер для фоновых задач                                           |
| `nginx`            | Веб-сервер с SSL (Let's Encrypt или self-signed)                          |
| `mariadb`          | База данных MariaDB 10.6                                                  |
| `memcached`        | Кэш-сервер                                                                 |
| `gearman`          | Сервер очередей задач Gearman                                             |
| `manticore_search` | Поисковый движок Manticore (основные индексы)                             |
| `manticore_logs`   | Manticore для realtime-логов                                               |
| `certbot`          | Автоматическое продление SSL-сертификатов от Let's Encrypt                |

---

## 🗂 Структура проекта

```text
.
├── app/                         # Код проекта (монтируется в контейнеры)
│   └── www/                    # Публичная директория
│       └── index.php
├── config/
│   ├── php/                    # Конфигурация PHP (php.ini, extensions)
│   ├── cron/                   # Файлы cron для php-cron контейнера
│   ├── nginx/                  # nginx конфиги по средам
│   ├── certs/                  # SSL сертификаты Let's Encrypt
│   └── manticore_search/       # Конфиг поиска
│   └── manticore_logs/         # Конфиг поиска для realtime
├── db/
│   ├── mysql/                  # Том для MariaDB
│   ├── init/                   # SQL-инициализация базы
│   ├── manticore_search/       # Данные поиска
│   └── manticore_logs/
├── logs/                       # Логи всех сервисов
├── sessions/                   # Сессии PHP
├── docker/                     # Dockerfile'ы и entrypoint-скрипты
│   ├── dockerfile_php
│   ├── dockerfile_cron
│   ├── dockerfile_worker
│   └── entrypoints/
│       └── ...
├── .env                        # Переменные окружения
├── docker-compose.yml
└── README.md
```

---

## 🚀 Как пользоваться

### 1. Сборка контейнеров


```bash
docker-compose build php-base
docker-compose build
```

### 2. Запуск окружения

```bash
docker-compose up -d
```

При первом запуске нужно не забыть сделать 
```bash
composer update
```

### 3. Переменные окружения (`.env`)

```ini
APP_ENV=dev                # или prod
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=bambolo
MYSQL_USER=bambolo
MYSQL_PASSWORD=secret
```

### 4. Cron и воркеры

- В `APP_ENV=dev`:
  - `php-cron` спит (`tail -f /dev/null`)
  - `bambolo-worker` можно тоже "усыпить" при необходимости
- В `prod`: запускается cron + воркеры через `command:` с проверкой переменной окружения

---

## 🧪 Полезные команды

```bash
docker-compose exec php bash                     # доступ внутрь PHP
docker-compose exec mariadb mysql -u...          # консоль базы
docker-compose logs -f manticore_search          # логи поиска
docker-compose run --rm php-cron sh              # отладка cron
```

---

## 🛡 Защита от случайных обновлений

Все образы используют зафиксированные версии (`nginx:1.24.0`, `mariadb:10.6.16`, и т.д.), чтобы избежать неожиданных изменений при `docker pull`.

---

## 🤝 Авторы

Bambolo Dev Team, 2025