Docker在多阶段管道中构建未命名的第一阶段

时间:2020-03-28 20:57:39

标签: docker build dockerfile

简介

我目前正在编写一个通用脚本来自动缓存多阶段dockerfile的阶段

我设想它的工作方式是自动浏览一个dockerfile,找到所有不同的阶段(基本上搜索FROM .... AS ...,一旦找到该代码,我就可以进行docker构建,在其中标记此特定像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

来参考上一阶段。

问题

当我尝试定位不包含AS ...的dockerfile中的第一阶段时,我希望我可以做类似的事情:

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

0 个答案:

没有答案