Dockerfile build ARG in COPY --from=



我正试图为一个项目建立一个构建过程,并且在COPY命令中使用arg遇到了一个问题。

这个过程的一部分是将一个库构建成一个图像,供多个其他图像使用。问题出现在以下几行:

ARG BUILD_CONFIG=dev
COPY --from=company/mu_library:${BUILD_CONFIG} /some/path /other/path

根据错误信息,${BUILD_CONFIG}没有被翻译成dev。当预先添加回显行时,回显打印dev

ARG BUILD_CONFIG=dev
RUN echo ${BUILD_CONFIG}
COPY --from=company/mu_library:${BUILD_CONFIG} /some/path /other/path

有没有人知道如何绕过它而不创建dockerfile中所有指向单独标签的重复阶段?

编辑:最小Dockerfile

FROM node:12.15:0 as prod
ARG BUILD_CONFIG=dev
RUN echo ${BUILD_CONFIG}
COPY --from=test/test-library:${BUILD_CONFIG} /work/dist /work/library/dist
CMD[ "bash" ]

错误:invalid from flag value test/test-library:${BUILD_CONFIG}: invalid reference format

最后检查一下,您不能在那里使用构建参数,但您可以在使用多阶段语法的顶级from行中使用它。然后,您还需要在顶层定义构建参数:

ARG BUILD_CONFIG=dev
FROM test/test-library:${BUILD_CONFIG} as test-library
FROM node:12.15:0 as prod
ARG BUILD_CONFIG
RUN echo ${BUILD_CONFIG}
COPY --from=test-library /work/dist /work/library/dist
CMD[ "bash" ]

最新更新