Веб-приложение на базе Django
(версии 5.3.1
), разработанное по туториалу с официального сайта фреймворка (Writing your first Django app).
Python
версии3.12
или выше (исключая версию3.12.5
, на ней не работаетblack
)Poetry
версии1.8.3
или выше
- Склонируйте репозиторий:
git clone https://github.com/MegaDoge1337/otus_django_tutorial.git
- Перейдите в директорию с проектом:
cd otus_django_tutorial
- Установите зависимости:
poery install
Приложение с дополнительными сервисами (СУБД, прокси-сервер) развертывается в Docker. Для простоты управления набором сервисов репозиторий содержит базовые docker-compose.yml
файлы. Используя их в качестве примера ниже описан процесс настройки.
Для разработочного инстанста используются следующие файлы
- .env.dev - файл с переменными среды;
- docker-compose.dev.yml - файл с настройками контейнера СУБД и приложения;
- postgres_init_dev.sql - запросы из данного файла выполняются при первом запуске контейнера, по умолчанию используется для создания базы данных.
Чтобы заполнить файл .env.dev
, см. раздел Переменные среды
.
Важно учитывать особенность докера при разрешении имен контейнеров, поэтому для переменной DB_HOST
следует использовать имя сервиса из compose
-файла.
Выполните следующие шаги:
- Создайте файл
.env.dev
и заполните его; - Заполните имя базы данных в
postgres_init_dev.sql
; - Создайте директории
/docker/postgres_dev
, туда будут примонтированы данные контейнера СУБД.
Запустите сборку образа с приложением:
docker-compose -f docker-compose.dev.yml build .
Запустите контейнеры:
docker-compose -f docker-compose.dev.yml up -d
После успешного старта контейнеров запустите миграции:
docker-compose exec web python manage.py migrations
Создайте суперпользователя:
docker-compose exec web python manage.py createsuperuser
Для продуктивного инстанста используются следующие файлы
- .env.prod - файл с переменными среды;
- docker-compose.yml - файл с настройками контейнера СУБД и приложения;
- postgres_init_prod.sql - запросы из данного файла выполняются при первом запуске контейнера, по умолчанию используется для создания базы данных;
- nginx.conf - файл конфигураций для обратного прокси-сервера.
Чтобы заполнить файл .env.prod
, см. раздел Переменные среды
.
Важно учитывать особенность докера при разрешении имен контейнеров, поэтому для переменной DB_HOST
следует использовать имя сервиса из compose
-файла.
Выполните следующие шаги:
- Создайте файл
.env.prod
и заполните его, укажите параметрDJANGO_STATIC_ROOT
как../staticfiles
; - Заполните имя базы данных в
postgres_init_prod.sql
; - Создайте директории
/docker/postgres_prod
, туда будут примонтированы данные контейнера СУБД.
Запустите сборку образа с приложением:
docker-compose build .
Запустите контейнеры:
docker-compose up -d
После успешного старта контейнеров запустите миграции:
docker-compose exec web python manage.py migrations
Выполните сборку статических файлов:
docker-compose exec web python manage.py collectstatic
Создайте суперпользователя:
docker-compose exec web python manage.py createsuperuser
Примером служит файл .env.example
:
DJANGO_DEBUG - режим отладки (True/False)
DJANGO_SECRET - секретный ключ проекта Django
DJANGO_TZ - часовой пояс
DJANGO_DB_ENGINE - движок СУБД (по умолчанию использовать `django.db.backends.postgresql`)
DJANGO_ALLOWED_HOSTS - список адресов, которые прослушивает приложение (разделителем служит запятая: `127.0.0.1,localhost`)
DJANGO_STATIC_ROOT - ссылка на корневую директорию для статических файлов
DB_HOST - адрес СУБД
DB_PORT - порт СУБД
DB_NAME - имя базы данных
DB_USER - пользователь СУБД
DB_PASSWORD - пароль пользователя СУБД
Для запуска инструментов форматирования используйте Makefile
- Запуск линтера
make lint
- Запуск форматирования
make format
- Сортировка импортов
make import-sort
Запустить набор тестов можно, развернув разработочный или продуктивнй инстанс, при помощи следующей команды:
docker-compose exec web python manage.py test polls