Dockerfile ';无法正常化任何内容';具有共享ARG的Docker Hub多级生成出错

Dockerfile ';无法正常化任何内容';具有共享ARG的Docker Hub多级生成出错,dockerfile,dockerhub,Dockerfile,Dockerhub,我有一个多阶段的构建,在各个阶段之间共享单个ARG(干燥路径)。大概是这样的: ARG BUILD_DIR=/build FROM alpine:latest as build RUN apk add --no-cache gcc musl-dev WORKDIR $BUILD_DIR RUN echo -e '\n\ #include <stdio.h>\n\ int main (void)\n\ { puts ("Hello, World!");}'\ &g

我有一个多阶段的构建,在各个阶段之间共享单个
ARG
(干燥路径)。大概是这样的:

ARG BUILD_DIR=/build

FROM alpine:latest as build
RUN apk add --no-cache gcc musl-dev
WORKDIR $BUILD_DIR
RUN echo -e '\n\
#include <stdio.h>\n\
int main (void)\n\
{ puts ("Hello, World!");}'\
>> hello.c
RUN cc -o hello hello.c

FROM alpine:latest
COPY --from=build $BUILD_DIR/hello /app
CMD ["/app"]
ARG BUILD\u DIR=/BUILD
来自阿尔卑斯山:最新竣工
运行apk add--无缓存gcc musl dev
WORKDIR$BUILD\u DIR
运行echo-e'\n\
#包括\n\
int main(无效)\n\
{puts(“你好,世界!”);}\
>>你好,c
运行cc-o hello.c
来自阿尔卑斯山:最新
复制--from=build$build\u DIR/hello/app
CMD[“/app”]
它在本地生成时没有问题,但自动Docker Hub生成失败,并出现以下错误:

步骤4/9:WORKDIR$BUILD\u DIR 什么都不能正常化

我很好奇,是什么导致了这个问题(Docker Hub上的构建引擎太旧?)。还有比Dockerfile中的硬编码路径更好的解决方法吗?

我需要更新
ARG
,在我想重用它的每个步骤上。报价文件:

ARG
指令在定义它的构建阶段结束时超出范围。要在多个阶段中使用arg,每个阶段必须包含
arg
指令

固定的
Dockerfile
是:

ARG BUILD_DIR=/build

FROM alpine:latest as build
ARG BUILD_DIR # <----------------------------------
RUN apk add --no-cache gcc musl-dev
WORKDIR $BUILD_DIR
RUN echo -e '\n\
#include <stdio.h>\n\
int main (void)\n\
{ puts ("Hello, World!");}'\
>> hello.c
RUN cc -o hello hello.c

FROM alpine:latest
ARG BUILD_DIR # <----------------------------------
COPY --from=build $BUILD_DIR/hello /app
CMD ["/app"]
ARG BUILD\u DIR=/BUILD
来自阿尔卑斯山:最新竣工
ARG BUILD_DIR#>hello.c
运行cc-o hello.c
来自阿尔卑斯山:最新

ARG BUILD_DIR#如果你想在一个步骤中使用ARG,你必须将另一个
ARG BUILD_DIR
放在…
@jornsharpe的
之后,是的,谢谢。我已经在昨天发布的解决方案中提到了这个问题。由于我的本地Docker根据我的问题默默地成功地从Dockerfile生成了构建,最初我甚至没有意识到
ARG
替换不起作用。我只在自动Docker Hub构建中遇到了这个错误。