В построении образа Docker есть недостаток.Предполагается, что образы Docker неизменны, т. Е. После их создания вы сможете запускать его только с использованием встроенного исполняемого файла, а не изменять его.Образы Docker имеют и могут быть версионированы так же, как ваши исходные коды.
В вашем примере вы пытаетесь выполнить процесс сборки, получая зависимости и выполнение в CMD, что противоречит принципам, как и почему контейнерынеобходимо использовать и проблему, которую они пытаются решить.
Я предлагаю прочитать эту статью, чтобы понять, почему требуется неизменность
https://medium.com/sroze/why-i-think-we-should-all-use-immutable-docker-images-9f4fdcb5212f
Что касается вашего Dockerfile, я бы предложилвы изменяете его, чтобы получить репозиторий и требования git как часть шагов сборки docker и вне CMD, и сохраняете там только исполняемый файл.
В указанном вами сценарии, в идеале, ваш CI (непрерывная интеграция) или любой другой конвейердолжен иметь этап для перестройки образа Docker с нуля, если в вашем удаленном git-репозитории есть какие-либо изменения, и соответственно измените его версию и отметьте его как последний тег.
Кроме того, эта ссылка имеет хороший способ построенияобразы докеров с использованием удаленных репозиториев git, которые могут быть полезны в вашем сценарии, если выВы не хотите использовать своего рода конвейер CI.