113 lines
4.6 KiB
Markdown
113 lines
4.6 KiB
Markdown
# 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 |