我想使用 Dockerfile 来构建镜像。但是,命令在运行时需要用户输入。目前,构建不成功,因为 docker 在用户输入时退出。我知道我可以在 docker run 命令上使用 -i -t 选项,但我想在 Dockerfile 上执行此操作。这怎么可能?
最佳答案
你可以试试 expect或类似的工具。
配置它的最简单方法是使用 autoexpect
工具,它可以让您以交互方式运行命令并为您创建一个期望脚本。
我无法让 rvmsudo 工作(我没有使用它,也不想花太多时间)所以我决定改用 vi
。首先运行 autoexpect
$ autoexpect vi test
这将打开 vi
,您可以创建或编辑文件并保存它。退出 vi
后,你会看到你的文件 test
以及一个期望脚本 script.exp
。
然后您可以删除测试文件并执行 script.exp
。它将使用相同的步骤重新创建相同的文件。
autoexpect 工具很棒,但如果您需要更好地控制所发生的事情,您可能必须从头开始创建脚本。例如。如果您不希望脚本使用确切的预期输入。
关于docker - 来自 dockerfile 的交互式 docker 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335041/