Является ли Docker альтернативой для «virtualenv» при разработке проекта Django? - PullRequest
1 голос
/ 25 января 2020

Для создания приложения требуется виртуальная среда, и теперь я использую «virtualenv» для создания виртуальной среды при разработке приложения Django. Я слышал о Docker о его виртуальной среде. Могу ли я использовать Docker в качестве альтернативы virtualenv?

Ответы [ 4 ]

2 голосов
/ 25 января 2020

Управление Python версиями и зависимостями с помощью virtualenv (или pipenv), вероятно, будет вашим выбором для приложения, работающего на localhost.

Конечно, вы можете запускать свое приложение исключительно в контейнере Docker, где вам не понадобятся какие-либо отдельные среды, и вы будете управлять зависимостями через Dockerfile (и, возможно, pip).

Я бы предложил следующий подход: запустить экземпляр вашего приложения на localhost и одновременно рабочую версию в Docker контейнере. Кроме того, запустите вашу базу данных в контейнере Docker рядом (оба управляются с помощью docker-compose.)

Подробное описание того, как настроить это (бесстыдный плагин), см. в этом посте. или это GitHub репо

2 голосов
/ 25 января 2020

В то время как на практике вы могли бы , вы действительно не должны. Docker в большинстве случаев должен быть методом распространения, а не способом изоляции вашей среды разработки. То есть ваш конечный продукт - проект Django, который вы создаете - может распространяться как образ docker, поэтому его легко развертывать (и масштабировать с помощью Kubernetes), но распространение образа только для обработки среды разработки безусловно, нестандартный, и я бы не рекомендовал его.

Вместо этого рассмотрим Pipenv , который аккуратно объединяет pip и venv в удобоваримую для человека упаковку. Сохраните все это в своем хранилище кода, и настроить среду разработки так же просто, как

git clone
pipenv install --dev
1 голос
/ 25 января 2020

Использование virtualenv или docker зависит от ваших требований или варианта использования. Контейнер

Docker инкапсулирует всю ОС и обеспечивает изоляцию ОС, тогда как virtualenv только инкапсулирует зависимости Python, которые позволяют переключение между Python версиями и зависимостями, но вы зависите от вашей операционной системы.

Virtualenv можно использовать в том случае, если на вашем компьютере есть два разных проекта, для которых требуется две разные версии одного и того же пакета с python. Как правило, virtualenv обеспечивает абстрагирование от использования ОС python.

Docker обеспечивает переносимость с одной машины на другую, тогда как с virtualenv вам придется выполнять установку в другом месте. Docker также изолирует все дополнительные системные зависимости и обеспечивает полностью изолированную среду. Это платформа контейнеризации, которая используется для упаковки вашего приложения и всех его зависимостей вместе в форме контейнеров, чтобы обеспечить бесперебойную работу вашего приложения в любой среде, которая может быть разработкой, тестированием или производством. Это помогает гарантировать, что среда разработки и производства полностью совпадают.

1 голос
/ 25 января 2020

Да docker может использоваться в качестве альтернативы.

virtualenv просто устанавливает fre sh python установку в пути, которая может использоваться для установки зависимостей, специфичных для вашего проекта, без загрязнения глобальной python установка и, следовательно, управление версионированием.

Docker - это шаг вперед, обеспечивающий полный образ ОС - linux и уровень изоляции ОС. Не только у одного может быть изолированная установка python, но также могут быть установлены другие зависимости, определяемые os c, такие как ffmpeg, lapack, arpack et c. Новый разработчик может раскрутить контейнер из образа docker, на котором установлены все зависимости (python и ОС).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...