Я начинаю разрабатывать несколько сервисов на Go, и у меня возникают некоторые проблемы, пытаясь понять, как и когда использовать флаг build -tags
.
Мой официальный образ сборки golang:1.13.0-stretch
в который я также добавляю librdkafka
.Затем я создаю свое приложение с помощью GOOS=linux GOARCH=amd64 go build -tags static_all main.go
(также пытался static
).
Проблема в том, что я просто получаю двоичный файл от компоновщика для окончательного образа (используя ubuntu
, а не scratch
)приложение не будет работать, если я не установлю librdkafka или просто не скопирую /usr/lib/librdkafka*
из компоновщика в /usr/lib/
.
Если я правильно понял флаг, -tags static / static_all
- это скомпилировать приложение со всеми необходимыми библиотеками(за счет большего размера), так что я могу легко развернуть его в любой системе (даже если в этом случае это то же самое).Но похоже, что это не так, потому что у меня все еще есть требование предоставить librdkafka
целевой системе (в данном случае это изображение)
Итак, в итоге:
Как узнать, когда мне нужно использовать -tags static
?
Где я могу найти список доступных тегов и их назначение?