У меня есть Dockerfile, который создает образ для нашего проекта. Настраиваю все правильно, но я ищу лучший способ построить образ контейнера, потому что у нас есть больше плагинов, которые определяют поведение нашего проекта.
Итак, есть основной двоичный файл и ~ 10 плагинов, и я могу использовать 1 или более для моего двоичного файла Go. В настоящее время эти плагины в основном находятся в том же репозитории, что и основной проект, но в будущем будут другие плагины в разных репозиториях.
Я ищу лучший способ иметь механизм построения образов Docker, где бы я мог иметь эти плагины.
Что у меня сейчас есть:
FROM golang:alpine AS builder
RUN apk update && apk add --no-cache build-base
# Create appuser.
RUN adduser -D -g '' project-user
WORKDIR $GOPATH/src/bitbucket.org/company/project
COPY . .
RUN GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o /go/bin/project
# Minimal version of image
FROM scratch
COPY --from=builder /etc/passwd /etc/passwd
COPY --from=builder /go/bin/project /go/bin/project
USER project-user
EXPOSE 7676
ENTRYPOINT ["/go/bin/project"]
У него нет плагинов, поэтому он не запустится должным образом, потому что для бинарного файла требуется как минимум один плагин, но есть флаг plugins
, ожидающий плагинов типа plugin.so
или plugin1.so;plugin2.so;..
.
Как я уже говорил, есть несколько плагинов, и сейчас у нас есть сборщики RPM, которые собирают бинарный файл и все плагины отдельно, и мы делаем yum install project plugin1 plugin2
и в файле конфигурации (поскольку флаги также могут считываться из конфигурации). ) добавляем плагины.
Мы хотим изменить на Kubernetes , поэтому я ищу это решение в Dockerfile.