🐳 DOCKERIZATION (ОБЯЗАТЕЛЬНО)
🎯 Цель

Весь проект должен запускаться одной командой через Docker, без ручной установки зависимостей на хост-машине.

📦 Требования к Docker
1. Общие требования

Использовать Docker + Docker Compose

Проект должен запускаться командой:

docker-compose up --build


После запуска:

Backend доступен на http://localhost:8000

Frontend доступен на http://localhost:5173 (или 3000)

🧩 Архитектура контейнеров
🔹 Контейнер 1 — Backend

Содержит:

Python 3.11+

FastAPI

FFmpeg (обязательно установлен внутри контейнера)

MoviePy

Все Python-зависимости

Требования:

FFmpeg должен быть доступен через CLI (ffmpeg -version)

Видео и временные файлы хранятся в volume

Поддержка долгих задач (video rendering)

🔹 Контейнер 2 — Frontend

Содержит:

Node.js 18+

Vue 3

Vite

Требования:

Горячая перезагрузка (dev mode)

API-запросы проксируются на backend

📁 Структура проекта (обязательная)
project-root/
│
├── backend/
│   ├── app/
│   ├── requirements.txt
│   ├── Dockerfile
│
├── frontend/
│   ├── src/
│   ├── package.json
│   ├── Dockerfile
│
├── media/
│   ├── audio/
│   ├── backgrounds/
│   ├── posters/
│
├── output/
│   └── videos/
│
├── docker-compose.yml
└── README.md

🐳 Backend Dockerfile — требования

Базовый образ: python:3.11-slim

Установка FFmpeg через apt

Установка Python-зависимостей

Запуск FastAPI через uvicorn

🐳 Frontend Dockerfile — требования

Базовый образ: node:18

Установка зависимостей

Запуск Vite dev server

🔁 Volumes (обязательно)
volumes:
  - ./media:/app/media
  - ./output:/app/output


Чтобы:

не терять видео при перезапуске

удобно подменять контент

🧪 Проверка Docker-сборки (Acceptance)

После docker-compose up:

 Frontend открывается в браузере

 Backend отвечает на /health

 Генерация видео работает

 FFmpeg корректно вызывается

 MP4 сохраняется в /output/videos

⚠️ ВАЖНО для AI

При генерации кода:

обязательно показать Dockerfile для backend

обязательно показать Dockerfile для frontend

обязательно показать docker-compose.yml

код должен работать без ручной донастройки

📌 Итог

AI должен выдать:

Backend код

Frontend (Vue) код

FFmpeg пайплайн

Dockerfile (2 шт.)

docker-compose.yml

Инструкцию запуска