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
|
|||
|
|
|
|||
|
|
Инструкцию запуска
|