Собрать приложение Golang с помощью librdkafka в образе докера Debian? - PullRequest
0 голосов
/ 27 сентября 2019

С Alpine, Alpine полностью поддерживает последние версии librdkafka, я могу просто сделать apk add в своем Dockerfile, и следующие работы:

FROM golang:1.13-alpine3.10 as builder

WORKDIR /app
COPY go.mod go.sum ./
COPY src ./src/

RUN set -eux; \
  apk add --no-cache gcc git libc-dev librdkafka-dev; \
  go build -o ./ ./...

Теперь для конкретного проекта мне нужно сделатьДружественные к Debian двоичные файлы, которые будут запускаться на серверах Debian / Ubuntu.

Проблема в том, что:

  • Официальные репозитории Debian поддерживают только действительно старые версии librdkafka версии 0.11.x.Даже для растяжек и бастеров, включая репорты бэкпортовБолее поздних версий у них нет.
  • Официальные репозитории Confluent поддерживают только librdkafka в Debian 8 (jessie).Они вообще не поддерживают librdkafka в Debian 9 (stretch) или 10 (buster) из-за несовместимости версий libssl.
  • Официальные образы golang поддерживают только Debian 9 (stretch) и 10 (buster).Они не поддерживают Debian 8 (Jessie).

Мои опции:

  • Используйте ветку dev клиента Golang Kafka, которая не требует установки librdkafka насистемный уровень.Это было бы замечательно, если бы это было стабильно и рекомендовано.
  • Установка / сборка librdkafka вручную в Debian 9/10.
  • Получить образ Debian 8 golang?
  • Могу ли я сделатьЦель Debian собирается из Alpine?Я подозреваю, что нет, но стоит спросить.

Какое рекомендуемое решение?

1 Ответ

0 голосов
/ 30 сентября 2019

Вот решение, которое сработало для меня.Мне пришлось скачать его из источника, и он дает последнюю версию

Пример Dockerfile выглядит следующим образом:

FROM golang:1.12.9-alpine AS build-stage

LABEL app="application_name"

ENV PATH=$PATH:$GOROOT/bin:$GOPATH/bin

# Because of https://github.com/docker/docker/issues/14914
# required by go get
RUN apk add --update --no-cache alpine-sdk bash python ca-certificates \
      libressl \
      tar \
      git openssh openssl yajl-dev zlib-dev cyrus-sasl-dev openssl-dev coreutils

WORKDIR /src/application_name

RUN git clone https://github.com/edenhill/librdkafka.git
WORKDIR /src/application_name/librdkafka
RUN /src/application_name/librdkafka/configure --prefix /usr
RUN make
RUN make install

WORKDIR /src/application_name
COPY . .
# build the application
RUN GOOS=linux go build -a -o image-name .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...