155 lines
3.2 KiB
Plaintext
155 lines
3.2 KiB
Plaintext
🐳 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
|
||
|
||
Инструкцию запуска |