我正试图为一个项目建立一个构建过程,并且在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" ]