Dockerfile 多重阶段构建时,修改第二阶段内容还会重新编译第一阶段的解决方法
FROM golang:1.24.0 AS builder
WORKDIR /build
COPY . .
RUN go build
FROM gcr.io/distroless/cc-debian12
WORKDIR /app
COPY --from=builder /build/main /app
EXPOSE 8181/tcp
ENTRYPOINT [ "main" ]
将第二步修改为
FROM gcr.io/distroless/cc-debian12
WORKDIR /app
COPY --from=builder /build/main /bin
EXPOSE 8181/tcp
ENTRYPOINT [ "main" ]
再次编译
docker build -t t1 .
还会再次执行第一阶段的 builder
,但实际上,不需要再这么做的了。
那么,可以使用以下命令先构建第一阶段
docker build --target builder -t my-builder-image .