Подтвердить что ты не робот

Использует ли virtualenv цель (в производстве) при использовании докеров?

Для разработки мы используем virtualenv для создания изолированной разработки, когда дело касается зависимостей. Из этого вопроса кажется, что развертывание приложений Python выполняется в virtualenv.

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

Должен ли virtualenv использоваться, когда одно приложение развертывается в контейнере докера?

Если докер содержит несколько приложений или только одно приложение на контейнер?

Если это так, следует ли использовать virtualenv при развертывании контейнера с несколькими приложениями?

4b9b3361

Ответ 1

Virtualenv был создан задолго до докера. Сегодня я склоняюсь к докеру вместо virtualenv по следующим причинам:

  • Virtualenv по-прежнему означает, что люди, потребляющие ваш продукт, должны загружать яйца. С докером они получают то, что "известно, что работает". Никаких строк.
  • Docker может делать гораздо больше, чем virtualenv (например, создавать чистую среду, когда у вас есть продукты, которым нужны разные версии Python).

Основным недостатком Docker была низкая поддержка Windows. Это изменилось с версией для Windows 10.

Что касается "количества приложений на контейнер", обычная политика - 1.

Ответ 2

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

Вы должны прочитать эту замечательную статью. https://glyph.twistedmatrix.com/2015/03/docker-deploy-double-dutch.html

Отмена ключа

Это правда, что во многих случаях, возможно, даже в большинстве случаев просто устанавливается материал в систему Python с Pip работает нормально; однако для более разработки приложений, вы можете в конечном итоге обратиться к инструменту предоставляемый вашим базовым контейнером, который реализован на Python, но который требует зависимостей, управляемых хостом. Положив вещи независимо от того, что мы делаем, мы сохраняем вещи, созданные базой система изображений изображений, аккуратно отделенная от вещей, которые наш приложение строится, а это означает, что не должно быть никаких непредвиденных независимо от того, насколько сложны используемые приложениями Python может быть.

Ответ 3

Знакомство с virtualenv очень просто, поэтому я бы сказал, начинаем без него в вашем контейнере докеров.

Если возникнет такая необходимость, возможно, вы можете установить его. Запуск "pip freeze > requirements.txt" предоставит вам все ваши пакеты python. Однако я сомневаюсь, что вам когда-нибудь понадобится virtualenv внутри контейнера докеров, поскольку создание другого контейнера будет более предпочтительной альтернативой.

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