2025-12-29 20:01:55 +03:00
|
|
|
|
# Инструкция по сборке единого Docker образа
|
|
|
|
|
|
|
|
|
|
|
|
Этот проект содержит единый Dockerfile для сборки frontend и backend в один образ.
|
|
|
|
|
|
|
|
|
|
|
|
## Структура
|
|
|
|
|
|
|
|
|
|
|
|
- `Dockerfile` - единый Dockerfile для сборки frontend и backend
|
|
|
|
|
|
- `nginx-unified.conf` - конфигурация nginx для единого образа
|
|
|
|
|
|
- `supervisord.conf` - конфигурация supervisor для запуска nginx и backend
|
|
|
|
|
|
- `build-and-save.sh` - скрипт для сборки и сохранения в tar (Linux/Mac)
|
|
|
|
|
|
- `build-and-save.ps1` - скрипт для сборки и сохранения в tar (Windows PowerShell)
|
|
|
|
|
|
|
|
|
|
|
|
## Сборка образа
|
|
|
|
|
|
|
|
|
|
|
|
### Linux/Mac:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
./build-and-save.sh
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Windows PowerShell:
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
.\build-and-save.ps1
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Вручную:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# Сборка образа
|
|
|
|
|
|
docker build -t play-life-unified:latest .
|
|
|
|
|
|
|
|
|
|
|
|
# Сохранение в tar
|
|
|
|
|
|
docker save play-life-unified:latest -o play-life-unified.tar
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Загрузка образа на другой машине
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker load -i play-life-unified.tar
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Запуск контейнера
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker run -d \
|
|
|
|
|
|
-p 80:80 \
|
|
|
|
|
|
--env-file .env \
|
|
|
|
|
|
--name play-life \
|
|
|
|
|
|
play-life-unified:latest
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Переменные окружения
|
|
|
|
|
|
|
|
|
|
|
|
Создайте файл `.env` на основе `env.example` с необходимыми переменными:
|
|
|
|
|
|
|
|
|
|
|
|
- `DB_HOST` - хост базы данных (по умолчанию: localhost)
|
|
|
|
|
|
- `DB_PORT` - порт базы данных (по умолчанию: 5432)
|
|
|
|
|
|
- `DB_USER` - пользователь БД
|
|
|
|
|
|
- `DB_PASSWORD` - пароль БД
|
|
|
|
|
|
- `DB_NAME` - имя БД
|
2025-12-31 19:11:28 +03:00
|
|
|
|
- `WEBHOOK_BASE_URL` - базовый URL для webhook (опционально)
|
|
|
|
|
|
- Bot Token и Chat ID настраиваются через UI приложения в разделе "Интеграции" -> "Telegram"
|
2025-12-29 20:01:55 +03:00
|
|
|
|
- `TODOIST_WEBHOOK_SECRET` - секрет для Todoist webhook (опционально)
|
|
|
|
|
|
|
|
|
|
|
|
**Важно:** Backend внутри контейнера всегда работает на порту 8080. Nginx проксирует запросы с порта 80 на backend.
|
|
|
|
|
|
|
|
|
|
|
|
## Проверка работы
|
|
|
|
|
|
|
|
|
|
|
|
После запуска контейнера:
|
|
|
|
|
|
|
|
|
|
|
|
- Frontend доступен по адресу: `http://localhost`
|
|
|
|
|
|
- API доступен через nginx: `http://localhost/api/...`
|
|
|
|
|
|
- Admin панель: `http://localhost/admin.html`
|
|
|
|
|
|
|
|
|
|
|
|
## Логи
|
|
|
|
|
|
|
|
|
|
|
|
Логи доступны через supervisor:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
docker exec play-life cat /var/log/supervisor/backend.out.log
|
|
|
|
|
|
docker exec play-life cat /var/log/supervisor/nginx.out.log
|
|
|
|
|
|
```
|
|
|
|
|
|
|