Вы всегда должны 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.