简介
我目前正在编写一个通用脚本来自动缓存多阶段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