14

我想使用 Dockerfile 来构建图像。但是,命令在运行时需要用户输入。目前,构建不成功,因为 docker 在用户输入时退出。我知道我可以在 docker run 命令上使用 -i -t 选项,但我想在 Dockerfile 上执行此操作。这怎么可能?

4

1 回答 1

6

您可以尝试使用expect或类似工具。

配置它的最简单方法是使用该autoexpect工具,它允许您以交互方式运行命令并为您创建一个期望脚本。

我无法让 rvmsudo 工作(我没有使用它,也不想花太多时间使用它)所以我决定vi改用它。第一次运行autoexpect

$ autoexpect vi test

这将打开vi,您可以创建或编辑文件并保存它。退出后,vi您将看到您的文件test以及一个期望脚本script.exp

然后您可以删除测试文件并执行script.exp. 它将使用相同的步骤重新创建相同的文件。

autoexpect 工具很棒,但如果您需要更好地控制发生的事情,您可能必须从头开始创建脚本。例如,如果您不希望脚本使用确切的预期输入。

于 2014-06-20T20:49:09.377 回答