2016-10-24 4 views
0

Я хочу поддерживать среду разработки для приложения python, для которого требуются зависимости, установленные с pip.Требования для докеров и пиков

Я планирую иметь исходный код (включая requirements.txt), вытащенный из git repo в папку хоста, которая монтируется в качестве тома докера.

Есть ли образец докеров, чтобы библиотеки обновлялись и все же избегали дорогого pip install -r requirements.txt с каждым git pull?

+0

Итак, какое решение вы ищете? Вопросы, требующие «рекомендаций» или «лучших практик», часто закрываются как «слишком широкие». –

+0

@BurhanKhalid Отредактировал мой вопрос; Надеюсь, что сейчас он менее широк. – max

+1

В основном вы должны установить свои зависимости Python в контейнере Docker и оставить его в стороне как изображение. Каждый раз, когда вы тянете свое репо, также тяните последнее (или что-то другое) изображение Docker и монтируйтесь на контейнер, построенный с тем же изображением. Вам придется вручную обновлять контейнер по мере обновления зависимостей. Вы можете выиграть, сохранив это в своем процессе сборки, чтобы он создавал изображение для каждого нажатия. – activatedgeek

ответ

0

Способ, которым следует избегать установки каждый раз, состоит в том, чтобы сделать pip install в отдельной инструкции RUN, прежде чем тянуть за весь репо. Для этого вам нужен другой способ, чтобы получить requirements.txt в контейнер - возможно, с ADD, указав полный удаленный URL:

ADD https://raw.githubusercontent.com/etc/requirements.txt . 
RUN pip install -r requirements.txt 

Когда вы docker build это, если содержимое requirements.txt не изменилось, то кешированный слой со всеми установленными зависимостями. Если файл требований изменился, установка снова запустится.

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

+0

Но не будет ли этот подход по-прежнему требовать, чтобы я 'docker build 'отображал изображение на моей локальной машине после каждого' git pull', которое затем «pip install» и заставит меня ждать 10-15 минут, прежде чем я смогу продолжить работу ? Конечно, если 'requirements.txt' не изменился, изображение останется неизменным, сохранив дисковое пространство; но я также надеялся избежать времени ожидания после 'git pull'. – max

Смежные вопросы