Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成Docker映像时引用格式无效_Docker_Dockerfile - Fatal编程技术网

生成Docker映像时引用格式无效

生成Docker映像时引用格式无效,docker,dockerfile,Docker,Dockerfile,我在Dockerfile中有以下几行: ARG SOMEARGUMENT COPY --from=$SOMEARGUMENT /some/path/goes/here ARG SOMEARGUMENT ARG SOMEVERSION=latest FROM ${SOMEARGUMENT}:${SOMEVERSION} as thebase RUN echo "This is a test" > /test.txt FROM alpine:latest COPY --from=the

我在Dockerfile中有以下几行:

ARG SOMEARGUMENT
COPY --from=$SOMEARGUMENT /some/path/goes/here
ARG SOMEARGUMENT
ARG SOMEVERSION=latest

FROM ${SOMEARGUMENT}:${SOMEVERSION} as thebase
RUN echo "This is a test" > /test.txt


FROM alpine:latest
COPY --from=thebase /test.txt /success.txt

CMD cat /success.txt
其中SOMEARGUMENT可以是“some/repository:1.1.1”或“some/repository:2.2.2”

但在尝试构建时,我总是会遇到错误:

invalid reference format: repository name must be lowercase
因此,很明显,构建映像时传递的参数(即SOMEARGUMENT)没有得到解析

在Dockerfile中真的有可能做这样的事情吗


谢谢。

因为你总是基于相同的回购协议,所以这样做更干净

ARG VERSION
FROM some/repository:${VERSION} as builder
RUN mkdir test
FROM scratch
COPY --from=builder /test /
资料来源:


扩展Siyu答案

您的问题的可能解决方案如下:

Dockerfile:

ARG SOMEARGUMENT
COPY --from=$SOMEARGUMENT /some/path/goes/here
ARG SOMEARGUMENT
ARG SOMEVERSION=latest

FROM ${SOMEARGUMENT}:${SOMEVERSION} as thebase
RUN echo "This is a test" > /test.txt


FROM alpine:latest
COPY --from=thebase /test.txt /success.txt

CMD cat /success.txt
要生成的命令:

docker build --build-arg SOMEARGUMENT=alpine --tag test .

有趣。我没有意识到这种行为。你能给我指一下如何使用它的文档吗?谢谢。谢谢思玉的回答。我刚测试过,但它不起作用。我删除了从头开始的指令,并正在进行另一个测试,但至少我看到了控制台输出的一些进展。你知道为什么会有这个“从头开始”的指令吗?@eindemwort你不能从中删除第二个
:这两个
中正在形成一个多阶段的构建,使你可以从
中复制。我使用的是从头开始的
只是为了说明这一点,它不一定是它,一个常见的最后阶段可能是来自alpine的
,这是一个小型linux映像。如果你能告诉我们你为什么想要这种行为,那会很有帮助。谢谢@Siyu!你的帮助非常有用!