Dockerfile脚本可在本机Ubuntu中运行,但不能在Windows或WSL中运行

时间:2019-11-18 11:11:53

标签: windows bash docker ubuntu windows-subsystem-for-linux

在我的Dockerfile中,我有下一个RUN脚本:

RUN set -ex; \
  echo "Downloading plugins"; \
  cd /tmp/plugins; \
  for f in `cat plugins.list`; do\
    curl -O -fSL $f; \
  done;

当我从本地Ubuntu构建映像时,它可以完美运行,但是当我从Linux的Windows子系统中的Powershell或Ubuntu创建映像时,总是会出现相同的错误:

 ---> Running in 095faf998ee4
 + echo 'Downloading plugins'
 + cd /tmp/plugins
 Downloading plugins                                                                                             
 + cat plugins.list
 ' curl -O -fS 'https://downloads.wordpress.org/plugin/ninja-forms.3.4.19.zip
 curl: (3) URL using bad/illegal format or missing URL    

如果我直接从bash运行curl命令,它也可以正常工作,但是,如果我运行脚本的那部分,它也会失败。

1 个答案:

答案 0 :(得分:0)

正如@cbley所评论的那样,问题出在EOL字符上,因为在Windows上默认的sublime文本具有类似于Windows的EOL,这给脚本带来了错误。

用@cbley代替tr -d '\r' < plugins.list > plugins.list_new来评论我的问题,或者通过将"default_line_ending": "unix",添加到sublime首选项中来将sublime文本的默认EOL设置为“ Unix”,就可以解决问题。

感谢@cbley!