Веб-приложение на базе 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