Quick Docker Django – инструментарий для быстрого запуска Django с дополнениями в Docker

Quick Docker Django – инструментарий для быстрого запуска Django с дополнениями в Docker

Чтобы запустить Django локально для учебных нужд или как основу для будушего проекта, чаще всего приходится долго возиться с ручной настройкой и прописыванием в скрипты всех нужных параметров. Мне это надоело, поэтому я сделал для себя небольшой тулкит.

Изначально Quick Docker Django не задумывался как большой bash-скрипт (ауч). Я предполагал, что это будет просто специальный файлы .env и набор из Dockerfile и Docker Compose, дополненный скриптами с переменными. Собственно именно мой личный сайт внутри отдалённо имеет как раз такую страктуру проекта и я планировал взять её без особых изменений. Но увлёкся и решил попрактиковаться. Получилось довольно необычно и местами неприятно, как мне кажется, но свою функцию эта штука выполняет.

Всё построено на bash, Docker и Docker Compose. В качестве базового образа используется официальный образ Python 3.12 Slim, а в качестве инструмента для работы с зависимостями – Poetry. Для базы данных используется PostgreSQL, для работы с media в S3 – Minio и пакет django-minio-backend.

Я также решил сразу встроить инструментарий Python Webpack Boilerplate, который мне очень нравится из-за практичности с точки зрения удобства разработки. Всё готово к работе после запуска проекта через базовый скрипт, но чтобы начать работу именно с Webpack через этот инструмент, нужно будет инициализировать фронтенд через специальную команду. Далее можно довольствоваться базовой работой с Webpack и SCSS, а можно прикрутить Tailwind, Bootstrap, Vue или React.

Quick Docker Django на GitHub

Я разместил полученный результат на GitHub, чтобы все желающие могли бы переиграть и уничтожить меня, а также раскритировать каждое решение клонировать репозиторий как шаблон или просто изучить его на предмет идей для своих проектов.

Надеюсь, это поможет новичкам, которые только начинают пытаться запихнуть Django в Docker и запустить свой первый проект.

[ Начало работы через ./fresh_start.sh ]

Использование скрипта ./fresh_start.sh в уже настроенном проекте приведёт к его обнулению.

Если вы беспокоитесь о случайном запуске, удалите этот файл после первичной настройки. Для начала работы запустите скрипт ./fresh_start.sh. Вам будет предложено указать название проекта, а также выбрать локаль и временную зону. Это отразится не только на настройках Django, но и на сборке контейнеров. После завершения настройки вы найдете готовый файл .env в директории docker и файлы приложения в /app/backend/django. Проект будет запущен автоматически. Вы сможете получить к нему доступ через http://localhost/.

[ Работа с проектом через ./control.sh ]

Bash
#Запуск проекта. Если сборка не проводилась или был очищен кеш Docker, перед запуском произойдет сборка.  
/.control.sh up

# Пересборка проекта. Необходима, если вы изменили структуру директорий или файлы Docker, docker-compose.yml или .env. 
/.control.sh build

# Подключение ко всем контейнерам для отслеживания вывода в реальном времени. 
/.control.sh logs

# Остановка проекта. Останавливает и удаляет контейнеры. 
/.control.sh down

# Подключение к контейнеру с Django для работы с python для выполнения команд manage.py, django-admin и т. д. 
/.control.sh backend

# Эта команда инициирует чистую настройку Python Webpack Boilerplate. Обратите внимание, что при этом будет удалено все содержимое каталога /app/frontend.
./control.sh init-frontend

# Подключение к контейнеру с Node.js и Webpack для работы с фронтендом. Перед началом работы вам нужно выполнить команду npm i, чтобы установить все зависимости для работы с Webpack.
/.control.sh frontend
#Запуск проекта. Если сборка не проводилась или был очищен кеш Docker, перед запуском произойдет сборка.  
/.control.sh up

# Пересборка проекта. Необходима, если вы изменили структуру директорий или файлы Docker, docker-compose.yml или .env. 
/.control.sh build

# Подключение ко всем контейнерам для отслеживания вывода в реальном времени. 
/.control.sh logs

# Остановка проекта. Останавливает и удаляет контейнеры. 
/.control.sh down

# Подключение к контейнеру с Django для работы с python для выполнения команд manage.py, django-admin и т. д. 
/.control.sh backend

# Эта команда инициирует чистую настройку Python Webpack Boilerplate. Обратите внимание, что при этом будет удалено все содержимое каталога /app/frontend.
./control.sh init-frontend

# Подключение к контейнеру с Node.js и Webpack для работы с фронтендом. Перед началом работы вам нужно выполнить команду npm i, чтобы установить все зависимости для работы с Webpack.
/.control.sh frontend

[ На что стоит обратить внимание ]

В репозитории хранится только что, необходимо для чистого запуска или чистого перезапуска. В файле .gitignore прописаны директории, которые относятся к данным, к файлам проекта на Django, к файлам фронтенда. Поэтому, если важно, чтобы они сохранялись в репозитории, то нужно удалить их из этого файла. Но лучшим решением будет использование Quick Docker Django как примера или шаблона.

Это самая первая версия Quick Docker Django, по сути – проба. Надеюсь, что и не последняя.