首页 > 解决方案 > 为什么“bash <(wget -qO- https://example.com)”不能与 docker 的 RUN 命令一起使用?但是可以从手动使用的主机或容器中工作吗?

问题描述

我创建了一个简单的 vim 发行版,并使用如下命令将其手动安装在本地计算机或 docker 内:

bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh)

该脚本有效。但我也想在 Dockerfile 中执行它。试图简单地添加:

 RUN bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh)

我有

 => ERROR [ 9/10] RUN bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh)                                                          0.3s
------
 > [ 9/10] RUN bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh):
#12 0.321 /bin/sh: 1: Syntax error: "(" unexpected
------
executor failed running [/bin/sh -c bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh)]: exit code: 2
ERROR: Service 'php' failed to build : Build failed
make: *** [recreate] Error 1

然后我想在\之前添加(

 RUN bash <\(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh\)

新的错误是

 => ERROR [ 9/10] RUN bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh)                                                          0.3s
------
 > [ 9/10] RUN bash <(wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh):
#12 0.310 /bin/sh: 1: cannot open (wget: No such file

stackoverflow 中的其他问题(和答案)对我没有帮助。

标签: bashdocker

解决方案


RUN使用 执行命令sh,但进程替换 with<(bash扩展名。

使用普通管道

RUN wget -qO- https://raw.githubusercontent.com/sensorario/newdots/master/install.sh | bash

推荐阅读