103

Разворачиваем Django приложение в Docker контейнере

Привет, Pikabu. Когда разворачивал своё первое настоящее Django приложение в интернете потратил кучу времени на изучение всех необходимых технологий. А когда работа была закончена, осознал, что через месяц не буду помнить и половины того, что узнал и как делал. Петому решил набросать для себя небольшую шпаргалку, затем немного заморочился, красиво оформил и решил поделиться с вами. Может кому пригодится.

Вот ссылка на репозиторий: https://github.com/YuriyCherniy/how-to-dockerize-django-app в котором лежит тестовое приложение на Django с инструкцией. Пройдя все шаги, пользователь получит приложение, завёрнутое в Docker контейнер, подключённое к базе данных Postgres, настроенный Nginx в качестве обратного прокси и раздающий статические файлы, а также SSL сертификат для домена.

Буду рад в помощи по улучшению руководства. Пишите какие места непонятны, может где-то можно, что-то сделать эффективней, где-то оптимальней, где-то безопасней и т.д и т.п.

Программирование на python

929 постов11.9K подписчиков

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

1
DELETED
Автор поста оценил этот комментарий

Контейнеры - перспективны, ждём ещё статьи от вас.

Староверов сильно не слушайте, они либо на голом железе, максимум на виртуализации, контейнеры для таких ребят как матерное слово.

Хотя 15 лет назад, поколение староверов все также боялись виртуализации, тоже было +100500 аргументов не использовать новые технологии

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Спасибо за поддержку!

Автор поста оценил этот комментарий

VPS/VDS  -это уже контейнер. В чем смысл запускать контейнер в контейнере ? Вы не только тянете кучу лишнего, но еще и вдобавок все получаете все потенциальные уязвимости той сборки, на основе которой создан докер контейнер.

Для джанги есть virtualenv/pipenv для управления зависимости внутри проекта и pyenv для управления версиями пайтона.

Имхо докер - это игрушка для больших компаний. И у них как правило на докере отдельные спецы сидят.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Наверное, это тема для холивара...

7
Автор поста оценил этот комментарий

а почему постгрес и nginx не в контейнерах?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Изначально всё у меня и было в контейнерах. Но в последствии нашел для себя удобным такое решение. Сейчас я могу на лету менять конфиги Nginx не трогая целый ворох контейнеров. Меньше возни с ACME клиентом, работает из коробки. Postgres многие гуру не советуют в контейнер пихать.

показать ответы
Автор поста оценил этот комментарий

VPS/VDS  -это уже контейнер. В чем смысл запускать контейнер в контейнере ? Вы не только тянете кучу лишнего, но еще и вдобавок все получаете все потенциальные уязвимости той сборки, на основе которой создан докер контейнер.

Для джанги есть virtualenv/pipenv для управления зависимости внутри проекта и pyenv для управления версиями пайтона.

Имхо докер - это игрушка для больших компаний. И у них как правило на докере отдельные спецы сидят.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Кстати, а разве технологии переведенные вами не несут с собой собственные уязвимости?

0
Автор поста оценил этот комментарий
переносимость.
умрет сервак, переезжать удумаешь, ещё петпроект появится
достаточно будет 1 композа на проект и одной команды - и у тебя готовое окружение.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Тут согласен, переносимость системы не учитывалась.

0
Автор поста оценил этот комментарий

Тогла другой вопрос, а джанго почему в контейнере?) просто это немного без мысленно в таком виде

раскрыть ветку (1)
Автор поста оценил этот комментарий

Удобно обновлять приложение.

0
Автор поста оценил этот комментарий

Логи приложения прикручены доступными снаружи контейнера?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Нет.

3
Автор поста оценил этот комментарий
теряется весь смысл контейнеризации, понимаешь?
какой смысл пихать только одно приложение в контейнер? что бы что?
раскрыть ветку (1)
Автор поста оценил этот комментарий

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

показать ответы
0
Автор поста оценил этот комментарий

Тогла другой вопрос, а джанго почему в контейнере?) просто это немного без мысленно в таком виде

раскрыть ветку (1)
Автор поста оценил этот комментарий

Вот ещё аргументы в пользу Nginx, без контейнера https://nickjanetakis.com/blog/why-i-prefer-running-nginx-on... и я не один такой пост читал, прежде, чем принимать решение как деплоить. Короче, практик разных очень много и все по своему правы.

0
Автор поста оценил этот комментарий
сомневаюсь :D
на в целом всё равно тс молодец
надеюсь к нам прислушается
раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо. Выше написал свои аргументы такого решения. К тому же, для новичка, мне кажется, легче уловить суть одноконтейнерного решения, а потом уже адаптировать под свои нужды. Compose поэтому там и оставил.

показать ответы