Асинхронный микросервис для управления фотографиями, построенный на FastAPI с использованием PostgreSQL и Yandex Cloud S3.
- Загрузка фотографий - Поддержка множественной загрузки файлов
- Создание миниатюр - Автоматическое создание превью изображений
- Управление фотографиями - Просмотр, удаление пользовательских фото
- Облачное хранение - Интеграция с Yandex Cloud Storage
- RESTful API - Полноценное REST API с документацией
- Docker поддержка - Готовая контейнеризация
- Миграции БД - Автоматические миграции с Alembic
- Python 3.12 — основной язык разработки
- FastAPI — современный асинхронный web-фреймворк
- SQLAlchemy — ORM для работы с базой данных (async)
- Alembic — миграции схемы БД
- PostgreSQL — реляционная база данных
- Docker, docker-compose — контейнеризация и оркестрация сервисов
- Poetry — управление зависимостями и пакетами
- Pydantic — валидация и сериализация данных
- ruff — быстрый и современный линтер для Python
- boto3 + Yandex.Cloud S3 — работа с облачным хранилищем
Проект следует принципам чистой архитектуры с разделением на слои:
src/
├── config/ # Конфигурация приложения
├── models/ # Модели базы данных
├── photo/ # Основной модуль фото-сервиса
│ ├── controllers/ # API контроллеры
│ ├── services/ # Бизнес-логика
│ ├── repositories/# Работа с данными
│ ├── schemas/ # Pydantic схемы
│ ├── dependencies/# Зависимости
│ ├── exceptions/ # Кастомные исключения
│ └── clients/ # Внешние клиенты
└── routes.py # Маршрутизация
- Python 3.10+
- Docker & Docker Compose
- Poetry (для локальной разработки)
- Создайте папку с проектом и склонируйте репозиторий:
mkdir photo_service
cd photo_service
git clone https://github.com/aquaracer/Fastapi-Photos-Microservice.git-
Настройте переменные окружения в файле .env
-
Соберите и запустите контейнеры:
docker-compose up --build- Примените миграции базы данных:
docker exec -it photo_service bash
poetry run alembic upgrade head| Метод | Endpoint | Описание |
|---|---|---|
POST |
/photo/ |
Загрузка фотографий |
GET |
/photo/list_own_photos |
Получение своих фотографий |
GET |
/photo/list_users_photos |
Получение фотографий пользователей |
DELETE |
/photo/{photo_id} |
Удаление фотографии |
После запуска приложения документация доступна по адресам:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc