Каковы лучшие практики для получения кода в Docker-контейнере? - PullRequest
1 голос
/ 16 октября 2019

Какова наилучшая практика для получения кода в Docker-контейнер?

Вот несколько возможных подходов:

  • ADD-вызов в docker-контейнере
  • git clone или git wget из репозитория в docker-контейнере
  • Монтированиевнешнее устройство

Ответы [ 2 ]

3 голосов
/ 16 октября 2019

Обычно мы используем mount для среды dev / local с докером для мгновенного применения изменений кода.

Вы можете использовать RUN git clone, но вам нужно будет установить git и иметь доступ к хранилищу.

Самый простой и наиболее используемый / рекомендуемый способ - поместить Dockerfile в репозиторий и использовать вызов ADD. Но вместо этого используйте директиву COPY, потому что она более явная

1 голос
/ 16 октября 2019

Вы всегда должны COPY код своего приложения в Dockerfile. Как правило, вам не следует монтировать что-либо поверх этого, и вы почти наверняка не должны запускать git в вашем Dockerfile.

Запуск Git имеет ряд очевидных проблем. Вы можете создать только тот конкретный коммит, который упоминает Dockerfile;в реальном развитии не является чем-то необычным желание построить ветку или прошлый коммит. Вам необходимо установить как git, так и соответствующие учетные данные в образе, с соответствующим пространством и проблемами безопасности. Кэширование слоя Docker означает, что docker build по умолчанию не будет повторять шаг git clone, если думает, что это уже сделано, а это означает, что вам нужно изо всех сил, чтобы получить более новую сборку.

Этоочень часто в SO вопросы монтировать код в контейнер. Это очень сильно побеждает точку зрения Докера, ИМХО. Если вы собираетесь запустить свое приложение в рабочей среде, вы хотите просто распространять изображение, а не раздельно распространять его код, но если вы разрабатывали в среде, где вы всегда скрываете встроенный в изображение код, вы на самом деле никогда не будетезапустить само изображение. Существуют также постоянные проблемы с производительностью и согласованностью в различных средах. Я действительно не рекомендую docker run -v или Docker Compose volumes: в качестве способа получения кода в контейнер.

Я видел достаточно SO вопросов, у которых есть Dockerfile, который по сути просто FROM python, дляпример, а затем используйте опции Docker Compose volumes: и command:, чтобы получить среду для живой разработки поверх этого. Гораздо проще просто установить Python и иметь инструменты, которые вам нужны, прямо перед вами, без необходимости проходить сложную последовательность косвенных действий для их запуска в Docker.

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