Skip to content

romver2002/FastSecret

Repository files navigation

Production-Ready FastAPI: Безопасная конфигурация

Этот проект является демонстрацией профессионального, production-ready подхода к управлению конфигурацией и секретами в веб-приложениях на основе FastAPI, SQLAlchemy и Docker.

🚀 Основные технологии

  • Backend: Python 3.11
  • Framework: FastAPI
  • ORM: SQLAlchemy 2.0 (с асинхронной поддержкой asyncpg)
  • Конфигурация: Pydantic-settings
  • Контейнеризация: Docker, Docker Compose
  • Логирование: Встроенный logging с конфигурацией для Uvicorn

🔑 Ключевые особенности

  • Разделение конфигурации и кода: Строгое следование принципу Twelve-Factor App.
  • Безопасность секретов: Пароль от БД передается через Docker Secrets, что исключает его попадание в код, систему контроля версий и логи.
  • Надежный запуск: docker-compose.yml использует healthcheck для гарантии того, что приложение запустится только после полной готовности базы данных.
  • Гибкая настройка: Единый .env файл используется для конфигурации. Для запуска в Docker используется docker-compose.override.yml для переопределения специфичных для контейнера настроек (например, DB_HOST).
  • Асинхронность: Весь стек, от FastAPI до драйвера БД (asyncpg), является полностью асинхронным.
  • Информативное логирование: Настроено структурированное логирование для Uvicorn.

⚙️ Как запустить проект

1. С помощью Docker (Рекомендуемый способ)

Предварительные требования: Установленный Docker и Docker Compose.

  1. Создайте .env файл: Скопируйте .env.example в .env. Значения по умолчанию уже подходят для запуска в Docker.

    cp .env.example .env
  2. Создайте файл с секретом: Этот файл будет содержать пароль, указанный в DB_PASS в вашем .env файле.

    echo "testpassword" > db_pass
  3. Соберите и запустите контейнеры:

    docker-compose up --build -d

    Docker автоматически использует docker-compose.yml и docker-compose.override.yml.

  4. Проверьте статус: Приложение будет доступно по адресу http://localhost:8000. Для проверки статуса подключения к БД перейдите на http://localhost:8000/db-status.

  5. Остановка:

    docker-compose down

2. Локальный запуск (для разработки)

  1. Настройте PostgreSQL: Убедитесь, что у вас запущен локальный сервер PostgreSQL.
  2. Настройте .env: Скопируйте .env.example в .env и укажите в нем актуальные данные для подключения к вашей локальной базе данных. Убедитесь, что DB_HOST=localhost.
  3. Установите зависимости: pip install -r requirements.txt.
  4. Запустите приложение: uvicorn src.main:app --reload.

Endpoints

  • GET /: Приветственное сообщение.
  • GET /db-status: Проверяет статус подключения к базе данных.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published