Проект реализует следующие задачи:
- Пагинированный прием получения картинки в base64 строке по эндпоинту /image (при помощи библиотеки flask).
- Для этого в теле POST запроса реализованы поля:
- id: номер чанка
- total: всего чанков,
- chunk: собственно сам чанк
- Финальный запрос после приема и конвертации всех чанков в JSON строку содержит следующие поля
- extension: Расширение картинки (png, jpg, jpeg ...),
- size: размер картинки в килобайтах,
- description: описание картинки,
- title: название картинки,
- tags: тэги картинки (например природа, пейзаж, анфас и прочее),
- base64: картинка в формате base 64 строки
- Проверка того, что присланная картинка действительно является картинкой указанного типа (при помощи библиотеки filetype).
- Сохранение картинки в папке gallery с соответствующим названием.
- Сохранение относительного пути картинки, тегов, описания и названия в базу данных PostgreSQL. Создание таблицы с соотвествующими полями строкового типа (при помощи библиотеки psycopg2).
- Создание бэкапа базы данных в формате sql
- Отклонение всех запросов, в которых размер файла превышает 1 MB
- Возвращение соответствующих статусов, если проверка не была пройдена по каким-либо причинам. Выбор статусов обоснован.
- Реализация инкапсуляции приема пагинированных запросов и логики работы с базой данных в отдельные классы.
- Ведение журнала статусов загрузки изображений в файле logs.txt, с указанием даты.
- Всё подготовлено для помещения приложения в контейнер Podman и создан dockerfile.
- Создана README.md инструкция для проекта.
- Создан репозиторий Git (вы находитесь здесь) c историей коммитов
- Скачайте и установите Podman Desktop.
- Запустив
Podman Desktop
убедитесь, что ваша система соотвествует требуемым характеристикам и установите саму службуpodman
- Во вкладке
Images
создайте новый образ (image
), используя файлdockerfile.txt
.
Или же откройте командную строку, перейдите в каталог проекта и пропишите команду:
podman build -t image_name
- В той же вкладке загрузите с сервера образ
PostgreSQL 16
через поиск. Или пропишите в командной строке
podman pull docker.io/library/postgres
- В командной строке пропишите:
podman network create mynetwork
- Во вкладке
Containers
запустите контейнер с образом PostgreSQL. Установите имя контейнераpostgres
, а переменным окружения задайте значенияPOSTGRES_PASSWORD=123
,POSTGRES_USER=postgres
,POSTGRES_DB=postgress
. Во вкладкеNetworking
установите пунктUder-defined network
и выберете созданную сеть. Или пропишите в командной строке:
podman run --name postgres -e POSTGRES_PASSWORD=123 -e POSTGRES_USER=postgres -e POSTGRES_DB=postgress --network mynetwork -d docker.io/library/postgres
- В той же вкладке запустите контейнер с образом проекта. Настройте
volume
для путей/pagination/gallery
и/pagination/logs
. Укажите ту же сеть, в которой находится контейнерpostgres
. - Откройте браузер, перейдите на страницу http://localhost:3000/ и проверьте работу приложения