Вы правы, что вы можете скомпилировать приложение локально и просто скопировать исполняемый файл в подходящий образ докера.
Тем не менее, есть преимущества при компиляции приложения в сборке Docker, особенно для крупных проектов с несколькими соавторами. В частности, на ум приходят следующие причины:
- Для построения источника приложения не требуется никаких локальных зависимостей (кроме докера). Кому-то даже не нужно было идти идти установленным. Это особенно ценно для проектов, в которых используются несколько языков. Рассмотрим кого-то, кто может захотеть отредактировать шаблон HTML внутри проекта go и посмотреть, как это выглядит во время выполнения контейнера.
- Среда сборки (версия go, управление зависимостями, пути к файлам ...) является постоянной. Любые внешние зависимости могут безопасно управляться и поддерживаться через Dockerfile.