-
Постоянное хранилище файлов
- ✅ Добавлен Docker volume
uploadsдля сохранения загруженных файлов - ✅ Файлы теперь не удаляются при перезапуске контейнеров
- ✅ Добавлен Docker volume
-
Правильная структура путей
- ✅ Используются относительные пути (только имя файла в БД)
- ✅ Полный путь формируется динамически при скачивании
-
Совместимость dev/prod
- ✅ В dev-режиме: bind mount
./back/uploads:/app/uploads - ✅ В prod-режиме: named volume
uploads:/app/uploads
- ✅ В dev-режиме: bind mount
Убедитесь, что установлены:
- Docker Engine 20.10+
- Docker Compose 2.0+
Создайте файл .env в корне проекта:
# Database
POSTGRES_DB=emotrack
POSTGRES_USER=emotrack
POSTGRES_PASSWORD=<НАДЁЖНЫЙ_ПАРОЛЬ>
# Backend
SECRET_KEY=<СЛУЧАЙНАЯ_СТРОКА_32+_СИМВОЛА>
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
DATABASE_URL=postgresql+psycopg2://emotrack:<ПАРОЛЬ>@db:5432/emotrack# Остановить dev-версию если запущена
docker-compose down
# Запустить production версию БЕЗ override файла
docker-compose -f docker-compose.yml up -d
# Применить миграции
docker-compose exec backend alembic upgrade head# Убедитесь что созданы volumes
docker volume ls | grep emotrack
# Должны быть:
# emotrack_pgdata
# emotrack_uploads# Проверить статус
docker-compose ps
# Логи
docker-compose logs -f
# Только backend логи
docker-compose logs -f backend./back/uploads/
└── resources/
├── 1_20260202093045_document.pdf
├── 1_20260202093145_image.jpg
└── ...
/var/lib/docker/volumes/emotrack_uploads/_data/
└── resources/
├── 1_20260202093045_document.pdf
├── 1_20260202093145_image.jpg
└── ...
-
Смените SECRET_KEY
# Генерация безопасного ключа python -c "import secrets; print(secrets.token_urlsafe(32))"
-
Смените пароль БД
- Используйте сложный пароль
- Обновите в
.envиdocker-compose.yml
-
Настройте CORS
- Укажите конкретные домены вместо
* - Отредактируйте
back/app/main.py
- Укажите конкретные домены вместо
-
Ограничения размера файлов
- По умолчанию: 50MB
- Настраивается в
back/app/routers/resources.py
-
HTTPS/SSL
- Используйте nginx как reverse proxy
- Настройте SSL сертификаты (Let's Encrypt)
docker-compose exec db pg_dump -U emotrack emotrack > backup_$(date +%Y%m%d).sqldocker run --rm -v emotrack_uploads:/data -v $(pwd):/backup alpine tar czf /backup/uploads_$(date +%Y%m%d).tar.gz -C /data .docker-compose exec -T db psql -U emotrack emotrack < backup_20260202.sqldocker run --rm -v emotrack_uploads:/data -v $(pwd):/backup alpine tar xzf /backup/uploads_20260202.tar.gz -C /data# 1. Остановить приложение
docker-compose down
# 2. Получить обновления
git pull
# 3. Пересобрать образы
docker-compose -f docker-compose.yml build
# 4. Запустить с новыми образами
docker-compose -f docker-compose.yml up -d
# 5. Применить новые миграции
docker-compose exec backend alembic upgrade head# Проверить права доступа
docker-compose exec backend ls -la /app/uploads/resources
# Создать директорию если не существует
docker-compose exec backend mkdir -p /app/uploads/resources# Проверить статус
docker-compose ps db
# Проверить логи
docker-compose logs db# Проверить текущую версию
docker-compose exec backend alembic current
# Показать историю
docker-compose exec backend alembic history
# Принудительно пометить как выполненную (осторожно!)
docker-compose exec backend alembic stamp head- Изменён
SECRET_KEYв production - Изменён пароль PostgreSQL
- Настроены CORS разрешения
- Volumes созданы и смонтированы
- Применены все миграции
- Настроен SSL/HTTPS
- Настроен бэкап
- Проверена загрузка/скачивание файлов
- Проверены логи на ошибки