Skip to content

PersonalPhoenix/handbooks

Repository files navigation

Инструкция к разворачиванию проекта

Перед запуском проекта необходимо:

  • В репозитории уже лежит намерено запушенный .env для простоты разворачивания
  • Создать .env файл в корне проекта (на уровне папки src)
  • Заполнить .env файл валидными переменными окружения

Переменные окружения

  • ENGINE - Нужен для SQLAlchemy. Определяет, какая СУБД будет использоваться.
  • DB_TYPE_ASYNC - Асинхронный драйвер/адаптер для подключения к СУБД.
  • DB_TYPE_SYNC - Синхронный драйвер/адаптер для подключения к СУБД.
  • DB_USER - Пользователь под которым будет происходить взаимодействие с базой данных.
  • DB_PASS - Пароль пользователя БД.
  • DB_HOST - IP-адрес / доменное имя сервера базы данных.
  • DB_PORT - Порт, на котором работает база данных.
  • DB_NAME - Имя базы данных.
  • SCHEMA_NAME - Наименование схемы БД которую используем.
  • API_STATIC_KEY - Статический ключ для взаимодействия с API.
  • DEBUG - Режим запуска приложения (в дебаге или нет).
  • TIME_ZONE - Часовой пояс приложения.

Запуск через Docker

  1. Создать образ docker-compose -p handbook_dev -f docker-compose.dev.yaml build
    1.1 Или можно собрать prod образ: docker-compose -p handbook_prod -f docker-compose.prod.yaml build
  2. Запустить docker-compose -p handbook_dev -f docker-compose.dev.yaml up (или prod вместо dev)
  3. Зайти на http://localhost:9001/docs и проверить работу сервиса
  4. После запуска контейнеров, скопировать файл backup.sql в контейнер с БД:
    4.1 Копируем docker cp ./backup.sql *id-контейнера*:/backup.sql
    4.2 Разворачиваем в консоли контейнера psql -U *db_user* -d *db_name* < ./backup.sql
    4.3 Проверям в консоли контейнера psql -U *db_user* -d *db_name* => \dt

Для простоты можно использовать Makefile

  1. Установить make
    1.1 Для Windows: choco install make
    1.2 Для Linux: sudo apt update и sudo apt install make
  2. Запустить make build-dev-nc (или prod вместо dev)
  3. Запустить make start-dev (или prod вместо dev)
  4. Зайти на http://localhost:9001/docs и проверить работу сервиса
  5. Для справки можно использовать make help

Структура проекта

📁 Структура проекта
project/
├── 📂 scripts/                   # Скрипты для запуска
│   └── 🛠️ run-dev.sh             # Скрипт для запуска в dev
│   └── 🛠️ run-prod.sh            # Скрипт для запуска в prod
├── 📂 src/                       # Исходный код проекта
│   ├── 📂 api/                   # API
│   ├── 📂 base_dao/              # Базовые DAO
│   ├── 📂 base_models/           # Базовые модели
│   ├── 📂 depends/               # Зависимости
│   ├── 📂 handbook/              # Приложение "Справочники"
│   ├── 📂 mixins/                # Миксины
│   └── 📂 utils/                 # Утилиты
├── 🐳 .dockerignore              # Аналог .gitignore для Docker
├── 🔐 .env                       # Конфиг с настройками
├── 🔐 .example.env               # Пример конфига с настройками
├── ⚙️ .gitignore                 # Игнорируем файлы / папки
├── 🧩 backup.sql                 # Dump БД с предзаполнеными таблицами
├── 🐳 docker-compose.dev.yaml    # Конфигурируем запуск dev сборки
├── 🐳 docker-compose.prod.yaml   # Конфигурируем запуск prod сборки
├── 🐳 Dockerfile                 # Конфигурируем Docker image
├── ⚙️ Makefile                   # Создаем удобные утилиты для быстрого запуска
├── 📝 poetry.lock                # Фиксируем зависимости
├── ⚙️ pyproject.toml             # Конфигурируем poetry
└── 📝 README.md                  # Документация к проекту

Точки развития приложения

  1. Добавить Trivy для анализа уязвимостей образов docker
  2. Настроить использование ruff (linter, formatter) и mypy в make
  3. Добавить тесты и настроить прогон тестов в make (pytest)
  4. Добавить ruff и прогон тестов в pre-commit hook
  5. Добавить логирование

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published