Я создаю GO приложение, имеющее дело с Apache Пульсар. Go клиенту требуются библиотеки C ++, как указано в документации Pulsar (то же самое относится и к Kafka).
Я хочу упаковать все это в контейнер, как можно меньше. Я обычно использую SCRATCH и копирую вывод из другого контейнера golang. К сожалению, я не могу получить внешние библиотеки из этого исходного контейнера:
FROM golang:latest as builder
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
ARG DOCKER_GIT_CREDENTIALS
WORKDIR /builder
ADD . /builder
RUN git config --global credential.helper store && echo "${DOCKER_GIT_CREDENTIALS}" > ~/.git-credentials
RUN make build
RUN echo $(go list -m) && mv bin/$(go list -m) app
FROM SCRATCH
COPY --from=builder /builder/app app
EXPOSE 8080
ENTRYPOINT ["./app"]
При использовании этого происходит сбой сборки, поиск пропущенных символов
/go/pkg/mod/github.com/apache/pulsar/pulsar-client-go@v0.0.0-20200118070759-21660e9402f8/pulsar/client.go:29:9: undefined: newClient
...
во время локальной сборки.
Как правильно интегрировать нужные мне библиотеки?