Docker построить безымянный первый этап в многоступенчатом конвейере - PullRequest
0 голосов
/ 28 марта 2020

Введение

В настоящее время я пишу обобщенный c сценарий для автоматического кэширования этапов для многоэтапного файла Docker

Я предполагаю, что он будет работать чтобы автоматически go через докер-файл найти все различные этапы (в основном поиск FROM .... AS ... Как только код обнаружит это, я могу затем выполнить сборку docker, где я отмечу этот указанный c этап как что-то вроде imagename- stage: firststage.

Однако, как описано в документации, вы также можете иметь многоэтапные docker файлы без имени: https://docs.docker.com/develop/develop-images/multistage-build/#use -multi-stage-builds

Пример:

FROM golang:1.7.3
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]  

В приведенном выше примере вы ссылаетесь на предыдущий этап, добавляя --from=0

Проблема

Когда я пытаюсь нацеливайтесь на первую стадию в файле Docker, который не содержит AS ... Я ожидаю, что мог бы сделать что-то вроде:

docker build . --target 0

Однако, когда я делаю это, я получаю следующую ошибку:

Sending build context to Docker daemon  49.99MB
Error response from daemon: failed to reach build target 0 in Dockerfile

Кто-нибудь знает, как решить эту проблему?

Редактировать:

Я также разместил этот вопрос на форуме docker, но пока не получил ответа: https://forums.docker.com/t/docker-build-first-stage-in-multi-stage-pipeline/91167

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...