https://github.com/lkhorasandzhian/my-fastapi-project
Финальное домашнее задание по дисциплине "Семинар наставника"
https://github.com/lkhorasandzhian/my-fastapi-project
docker fastapi sqlalchemy sqlite uvicorn
Last synced: 3 months ago
JSON representation
Финальное домашнее задание по дисциплине "Семинар наставника"
- Host: GitHub
- URL: https://github.com/lkhorasandzhian/my-fastapi-project
- Owner: lkhorasandzhian
- License: mit
- Created: 2025-12-19T23:08:23.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-20T07:01:43.000Z (6 months ago)
- Last Synced: 2025-12-22T10:55:00.062Z (6 months ago)
- Topics: docker, fastapi, sqlalchemy, sqlite, uvicorn
- Language: Python
- Homepage:
- Size: 99.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# my-fastapi-project
Финальное домашнее задание по дисциплине "Семинар наставника".
Выполнил: Хорасанджян Левон, студент МИНДА251.
## Введение
### Описание
Цель задания: закрепить навыки разработки микросервисов на базе FastAPI, работы с Docker и GitHub.
Проект содержит два микросервиса:
- TODO — управление задачами;
- Short URL — сокращение ссылок и редиректы.
### Структура проекта
```text
src/
├── todo_app/
└── shorturl_app/
```
## API
### TODO Service
- `POST /items`
- `GET /items`
- `GET /items/{id}`
- `PUT /items/{id}`
- `DELETE /items/{id}`
Swagger: http://localhost:8000/docs
### Short URL Service
- `POST /shorten`
- `GET /{short_id}`
- `GET /stats/{short_id}`
Swagger: http://localhost:8001/docs
## Развертывание проекта
Развертывание осуществляется с помощью Dockerfile-скриптов.
### Docker Hub
Собраны и опубликованы Docker-образы в репозитории Docker Hub:
- TODO repository: https://hub.docker.com/r/lkhorasandzhian/todo-service
- Short URL repository: https://hub.docker.com/r/lkhorasandzhian/shorturl-service
### TODO
```powershell
docker build -t todo-service src/todo_app
docker volume create todo_data
docker run -d -p 8000:80 -v todo_data:/app/data todo-service
```
### Short URL
```powershell
docker build -t shorturl-service src/shorturl_app
docker volume create shorturl_data
docker run -d -p 8001:80 -v shorturl_data:/app/data shorturl-service
```
## Тестирование
Примеры HTTP-запросов для тестирования API находятся в папке `curl/`.
Для работы с `.http`-файлами советую воспользоваться расширением [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) в VS Code. Оно позволяет удобно отправлять запросы прямо в редакторе кода из файла с расширением `.http`.
### CI / GitHub Actions
В репозитории настроен базовый workflow GitHub Actions, который выполняет проверочную сборку Docker-образов для сервисов.
## Данные
Данные сохраняются после перезапуска контейнеров с помощью БД SQLite.
Используются два отдельных Docker volumes под каждую БД.
## Стек технологий
| Технология | Назначение |
|:-----------:|:------------:|
| FastAPI | API & Swagger UI |
| SQLite | База данных |
| SQLAlchemy | ORM |
| Docker | Контейнеризация |
| Uvicorn | ASGI-сервер |