File Storage - это сервер для хранения файлов с функционалом загрузки, получения метаинформации, скачивания и удаления файлов. Он предоставляет простой API для работы с файлами и хранит метаданные файлов в базе данных PostgreSQL. Аналогично Amazon S3, FileStorage поддерживает заголовки и метаданные файлов, однако отличается тем, что может быть развернут как локальный сервер, что делает его более доступным для небольших проектов или локальных применений.
Подробное описание представлено в Техническом Задании
- Загрузка файлов: Пользователи могут загружать файлы на сервер с помощью API запроса POST /api/v1/upload. При загрузке файлов пользователи могут указать идентификатор, имя и тег файла.
- Получение метаданных файлов: Сервер предоставляет API запрос GET /api/v1/get для получения метаданных файлов. Пользователи могут фильтровать файлы по различным критериям, таким как идентификатор, имя и тег файла. Для оптимизации производительности этот эндпоинт использует механизм кэширования. Результаты запросов к этому эндпоинту кэшируются использованием базы данных Redis для улучшения скорости обработки запросов. Это позволяет уменьшить нагрузку на сервер и ускорить ответы на повторяющиеся запросы.
- Удаление файлов: Сервер позволяет удалить файлы с помощью API запроса DELETE /api/v1/delete. Пользователи могут указать критерии для удаления файлов, и сервер удалит файлы, соответствующие этим критериям.
- Скачивание файлов: Пользователи могут скачать файлы с сервера с помощью API запроса GET /api/v1/download, указав идентификатор файла.
При запуске в контейнерах поднимается веб-сервер NGINX, который проксирует запросы на сервер приложений Uvicorn для обработки API запросов. Для отслеживания состояния базы данных Reids в отдельном контейнере поднимается служба Redis-Commander.
- Перейдите в директорию с вашими проектами.
- Склонируйте репозиторий на свой локальный компьютер:
# Linux
> https://github.com/semyonnakrokhin/file_storage.git
- Перейдите в каталог проекта:
# Linux
> cd file_storage
-
В этой директории и в директории ./fastapi_app создайте файлы, перечисленные в environment.txt. В какой именно директории нужно создавать файл указано в квадратных скобках
-
Выполните команду находясь в корневой директории проекта:
# Linux
> docker-compose up --build
-
Откройте веб-браузер и перейдите по адресу http://localhost:1337/docs для доступа к веб-сервису в режиме Swgger. Для отслеживания информации в базе данных Redis, вы также можете использовать Redis Commander, который доступен на порту 8081. Просто откройте браузер и перейдите по адресу http://localhost:8081.
-
Для остановки контейнеров выполните команду:
# Linux
> docker-compose down
-
Убедитесь, что в корневой директории есть все файлы, перечисленные в environment.txt
-
Выполните команду находясь в корневой директории проекта:
# Linux
> docker-compose -f docker-compose_test.yaml up --build
- Для остановки контейнеров выполните команду:
# Linux
> docker-compose down
Если вы хотите внести свой вклад в проект File Storge, пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения дополнительной информации о том, как начать.
Семен Накрохин 2206095@gmail.com
Этот проект распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.