использовать golang в Docker-контейнере в многоступенчатой ​​сборке - PullRequest
0 голосов
/ 29 ноября 2018

Я хочу использовать многоэтапную сборку и хочу, чтобы в конце у меня был Golang внутри работающего контейнера.Когда я запускаю контейнер и запускаю версию, я получаю ошибку «unknown go»

# build stage
FROM golang:1.11.2-alpine3.8 AS builder-env



ENV CGO_ENABLED=0
ENV GOOS=linux


ADD https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 /usr/bin/dep
RUN chmod +x /usr/bin/dep

RUN mkdir -p $GOPATH/src/github/mtp/myproj
WORKDIR  $GOPATH/src/github/mtp/myproj


COPY Gopkg.toml Gopkg.lock ./


RUN dep ensure --vendor-only

COPY . ./



RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o /myproj .


FROM alpine:latest
RUN mkdir /data

COPY --from=builder-env myproj ./

Я могу сделать что-то подобное, чтобы заставить его работать, но это хорошие варианты?

FROM alpine:latest
RUN mkdir /data
RUN update-ca-certificates && \
    apk add go 

COPY --from=builder-env myproj ./

1 Ответ

0 голосов
/ 29 ноября 2018

Вам не нужен исполняемый файл go для запуска скомпилированной программы, только полученный в результате двоичный файл.Если вы добавите отсутствующую строку CMD в ваш Dockerfile

CMD ["./myproj"]

, я бы ожидал, что она будет работать нормально.

...