Изначально 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 ]
#Запуск проекта. Если сборка не проводилась или был очищен кеш 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, по сути – проба. Надеюсь, что и не последняя.