我有一个包含类似内容的 Dockerfile
RUN url=$(curl -sL https://... | jq) #simply put url=https://example.com/tar.tgz
RUN wget $url #will fail here
IMO 的问题是
RUN
意味着 /bin/sh -c wget $URL
并且 wget 会抱怨缺少 URL
我试图从终端 /bin/sh -c "wget -v $url"
本地测试,并且它可以工作,但是当放入 Docker 文件中时
RUN "wget -v $url"
那么错误是
ERROR: failed to solve: process "/bin/sh -c \"wget $url\"" did not complete successfully: exit code: 127
因为RUN会为你逃脱"
。
是否可以使用变量或 ARG 中的 url 在 Dockerfile 中下载某些内容?
我发布后的那一刻我就找到了答案。
似乎每个
RUN
都是单独的上下文,因此只需将命令组合成单个 RUN
就像
RUN url=$(curl -sL https://... | jq) && wget $url