Бэкенд сервис на Python: FastAPI + PyDantic + SqlAlchemy + Alembic + Docker
Зависимости (python-пакеты) лежат в файле products/requiremets.txt
pip install -r app/requirements.txt
При развертывании создайте в корне проекта файл с переменными окружения.
По умолчанию его название .env
, но можно переопределить при запуске приложения
ENV_FILE=your_File.env python main.py
В этом файле объявите следующие переменные
POSTGRES_USER=user
POSTGRES_PASSWORD=passwd
POSTGRES_DB=backend
POSTGRES_HOST=database_host
POSTGRES_PORT=database_port
DEBUG=False
SERVER_NAME=Your Server Name
PROJECT_NAME="Backend School"
Для запуска с помощью wsgi Uvicorn внутри папки products
выполните
python main.py
или
ENV_FILE=.env python main.py
Для обработки большего числа запросов на одном сервере можно использовать связку Gunicorn + Uvicorn для запуска через Gunicorn воркеров из Uvicorn'а.
gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8080
Перед запуском через Docker Compose также необходимо создать файл с переменными
окружения .env
или экспортировать их в среду.
ВАЖНО: Для правильной работы в docker-compose без внешнего порта для БД,
назначьте POSTGRES_HOST=database
.
Для запуска проекта со всеми сервисами одновременно необходимо выполнить
docker-compose up --build -d
Управление версиями БД осуществляется с помощью пакета alembic
.
Для автоматического создания миграции при изменении схемы нужно выполнить
alembic revision --autogenerate -m "Name of migration"
Для обновления/инициализации таблиц через миграции выполните
внутри папки products
команду
alembic upgrade head