将键击发送到Dockerfile,Ubuntu

时间:2016-05-18 03:08:10

标签: bash ubuntu docker command

我正在创建Dockerfile脚本,它有一个执行程序的命令行,需要用户输入 1 键盘作为选择的选项才能继续执行。

在这种情况下,

Xdotoolman yesexpect无法提供帮助。

更新源代码:

首先,下载并解压缩RevoMath库,导航到RevoMath文件夹,然后执行安装脚本。


...
RUN wget -q https://mran.microsoft.com/install/mro/3.2.4/RevoMath-3.2.4.tar.gz
RUN tar -xzf RevoMath-3.2.4.tar.gz
RUN cd RevoMath/
RUN ./RevoMath.sh
...

安装脚本有一些选择选项如下:


echo "1. Install MKL"
echo "2. Uninstall MKL"
echo "3. Exit utility"

我们需要从键盘输入 1 进行安装。我们怎么能通过Docker命令来做呢?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

如果我正确理解您,您希望在 Dockerfile echo 1 |之前添加./RevoMath.sh

...
RUN cd RevoMath/ && echo 1 | ./RevoMath.sh
...

BTW:在你的例子中,这些行无法按预期工作:

RUN cd RevoMath/
RUN ./RevoMath.sh

因为每个RUN都是独立执行。 如果要从特定文件夹执行RevoMath.sh脚本,则应使用&&(参见我的示例)

答案 1 :(得分:0)

我建议使用标准输入的重定向。

例如,install.sh在执行时需要用户输入一些输入 假设您需要输入 1 作为对第一次互动(问题)和
的回复 那么你有另一个响应 y 进行进一步的交互,那么最好使用stdin的重定向。

$#>install.sh <EOF
$#>1
$#>y
$#>EOF

这样每当脚本等待输入时,第一个问题的答案为1,第二个问题的答案为y。