Вы не можете включать не-go файлы в процесс go build
.Инструмент Go не поддерживает «встраивание» произвольных файлов в конечный исполняемый файл.
Вы должны использовать go build
, чтобы затем создать свой исполняемый файл, любые непроходные файлы, например шаблоны, изображения, файлы конфигурации, нужнобыть доступным для этого исполняемого файла.То есть;исполняемый файл должен знать, где находятся не-go файлы в файловой системе хоста, на котором запущена программа go, а затем открывать и читать их по мере необходимости.Так что забудьте о встраивании .env
в main
, вместо этого скопируйте .env
вместе с main
в то же место, из которого вы хотите запустить main
.
Тогда проблема с вашим докер-файломтот факт, что целевой хост копирует только конечный исполняемый файл из go-compile (COPY --from=go-compile /app/main /app/main
), он не копирует другие файлы, присутствующие в образе go-compile, и поэтому ваше приложение main
не может получить доступ к .env
поскольку они не находятся на одном хосте.
Как указывалось в комментариях @ mh-cbon, существуют сторонние решения для встраивания не go-файлов в двоичный файл go, один изчто gobuffalo/packr
.