我仅看到了使用COPY在多阶段Dockerfile的各个阶段之间复制文件的示例,但是有没有一种方法可以简单地复制ENV变量?我的用例是从git镜像开始,只是要获取将作为构建一部分的提交哈希。我稍后用来构建的图像还没有git。
我意识到我可以将git哈希输出到文件中并使用COPY,但我只是想知道是否有更清洁的方法?
最佳答案
您有3个选择:
“ARG”解决方案,“基础”解决方案和"file"解决方案。
ARG version_default=v1
FROM alpine:latest as base1
ARG version_default
ENV version=$version_default
RUN echo ${version}
RUN echo ${version_default}
FROM alpine:latest as base2
ARG version_default
RUN echo ${version_default}
另一种方法是将基础容器用于多个阶段:
FROM alpine:latest as base
ARG version_default
ENV version=$version_default
FROM base
RUN echo ${version}
FROM base
RUN echo ${version}
您可以在此处找到更多详细信息:
https://github.com/moby/moby/issues/37345
同样,您可以在第一阶段将哈希保存到文件中,然后在第二阶段复制该文件,然后在其中读取和使用它。
关于dockerfile - 如何在多阶段Docker构建的各个阶段之间复制变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52904847/