vikkyshostak
@vikkyshostak
< This head full of dreams.

Best practice. Docker для проектов на Django?

Доброго времени суток!

Выдался свободный день, да и долгие выходные скоро.. короче говоря, решил разобраться с Docker и запаковать в контейнер один свой нон-профит проект на Django 1.11. До этого момента, много чего слышал про контейнеры (в основном на хабре), но всегда как-то без них обходилось и опыта ноль (контора мелкая, хватает устных договорённостей внутри команды по зависимостям, да и машины у всех одинаковые — macOS).

Итак, хотелось бы узнать у практикующих докеров пару нубских вопросов. У меня в наличии есть вот такая структура: VDS на Debian (9.2), готовый проект на Django (1.11.8) + nginx (1.13) + Gunicorn (latest) + PostgreSQL (9.6.3) + Redis (latest) + Celery (latest). А вопросы буду следующие:

0. Изолировать ли всё, вплоть до ОС, если я всё равно буду использовать контейнеры на VDS Debian 9?
1. Кидать ли каждый сервис в разные контейнеры или всё в один?
2. Как в контейнере настраивать и запускать Redis + Celery?
3. Как пулить в контейнер изменения в коде проекта (Django), если он лежит в приватном (платная подписка) репозитории GitHub и использует RSA-ключи для авторизации и синхронизации репозитория с VDS?
4. Нужно ли вообще проект (Django) запихивать в контейнер или можно просто на VDS как обычно хранить?
5. Если нет, то как пользоваться ресурсами из контейнеров внутри Django (БД, Redis, Celery и так далее)?
6. Как настраивать Gunicorn и nginx в контейнере?

Заранее спасибо за толковые ответы, с наступающим!
  • Вопрос задан
  • 888 просмотров
Пригласить эксперта
Ответы на вопрос 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
0. Контейнерам по барабану, что там у вас на хосте, кроме ядра.
  1. Один сервис - один контейнер. Но это не значит, что один сервис - один образ, можно например Django+Celery в одном образе держать.
  2. Даёте имя контейнеру с Redis, указываете в конфигурации Celery куда стучаться.
  3. SSH-агент + git pull + docker build
  4. По желанию, если нет в планах масштабироваться - проще цеплять томом с хоста.
  5. Выделяете контейнеры в свою сеть, внутри неё они могут общаться между собой по именам.
  6. Gunicorn вешается на порт, nginx из другого контейнера проксирует.

Примеры на Docker compose есть на том же Github.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы