Dockerfile:`curl`命令无法保存文件

x6yk4ghg  于 12个月前  发布在  Docker
关注(0)|答案(1)|浏览(134)

我正在构建一个我认为是简单的dockerfile,代码中有一行抛出了错误。

# dockerfile
...
RUN     curl -k --output bin/theta `curl -k 'https://mainnet-data.thetatoken.org/binary?os=linux&name=theta'`
RUN     curl -k --output bin/thetacli `curl -k 'https://mainnet-data.thetatoken.org/binary?os=linux&name=thetacli'`
RUN     curl -k --output guardian_mainnet/node/config.yaml `curl -k 'https://mainnet-data.thetatoken.org/config?is_guardian=true'`
...

字符串
前两个curl命令运行时没有任何问题。第三个curl命令抛出错误:

Warning: Failed to create the file guardian_mainnet/node/config.yaml: No such file or directory


目录已经创建并且存在。前面的两个curl命令使用完全相同的格式,并导致thetathetacli文件都被创建。
实际上,我已经为这个dockerfile设置了一个docker容器,其中的基础镜像基于FROM。从那里开始,我逐行运行了dockerfile中的代码,它执行得没有任何问题。(包括第三行)。换句话说,如果我手动从CLI为基本容器运行dockerfile命令,它会工作-只有当在主机级别从dockerfile构建容器时,才会抛出错误。
唯一的区别是(i).yaml的文件类型和(ii)?在https链接.但我没有发现说这将是一个问题. [我已经尝试保存不带扩展名,它没有产生差异.]
我错过了什么?

tquggr8v

tquggr8v1#

使用--output保存时,请添加--create-dirs以创建必要的目录。在执行此操作时,请注意您的用户和组。
--curl-dirs当与-o,--output选项一起使用时,curl将根据需要创建必要的本地目录层次结构。该选项将创建-o,--output选项中提到的目录,而不会创建其他目录。如果--output文件名没有使用目录,或者它提到的目录已经存在,则不会创建目录。
要在使用FTP或SFTP时创建远程目录,请尝试--ftp-create-dirs。

相关问题