Перед запуском проекта необходимо:
- В репозитории уже лежит намерено запушенный
.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-compose -p handbook_dev -f docker-compose.dev.yaml build
1.1 Или можно собратьprodобраз:docker-compose -p handbook_prod -f docker-compose.prod.yaml build - Запустить
docker-compose -p handbook_dev -f docker-compose.dev.yaml up(илиprodвместоdev) - Зайти на
http://localhost:9001/docsи проверить работу сервиса - После запуска контейнеров, скопировать файл
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
- Установить
make
1.1 ДляWindows:choco install make
1.2 ДляLinux:sudo apt updateиsudo apt install make - Запустить
make build-dev-nc(илиprodвместоdev) - Запустить
make start-dev(илиprodвместоdev) - Зайти на
http://localhost:9001/docsи проверить работу сервиса - Для справки можно использовать
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 # Документация к проекту
- Добавить
Trivyдля анализа уязвимостей образовdocker - Настроить использование
ruff(linter, formatter) иmypyвmake - Добавить тесты и настроить прогон тестов в
make(pytest) - Добавить
ruffи прогон тестов вpre-commit hook - Добавить логирование