如何在 Dockerfile 中回答安装问题?

16

我试图使用dockerfile安装某些内容。 但是当我运行命令时,我必须回答以下问题:

输入

6

72

我的dockerfile如下所示,但似乎无效。

FROM ubuntu:latest
RUN apt-get update
RUN apt-get install -y expect
RUN apt-get -y install software-properties-common 
RUN apt-add-repository ppa:ondrej/php
expect “Press [ENTER] to continue or Ctrl-c to cancel adding it. ” { send “\n” }
RUN apt-get -y install php7.1 php7.1-fpm 
expect “Please select the geographic area in which you live. ” { send “6\n” }
expect “Please select the city or region corresponding to your time zone. ” { send “72\n” }
RUN -y apt-get install nginx

有人能告诉我如何在 Dockerfile 中回答安装问题吗?

2个回答

19
我测试了您的Dockerfile,没有回答任何问题,但如果您想在运行命令时自动回答,可以使用yes(用于“y”和“n”响应)或echo
例如: yes | <YOUR COMMAND> yes n | <YOUR COMMAND> "n"响应 echo | <YOUR COMMAND> echo生成新行(Enter) echo "some response" | <YOUR COMMAND> 带有“some response”的响应

你说得对。昨天我好像混淆了命令。 我发现我的问题更像是其他问题,你介意看一下我在这里发布的新问题吗? https://stackoverflow.com/questions/52272495/how-to-run-command-using-docker-compose - jimmy
如何处理多个提示?对于apache2,它正在请求区域和时区。如何在dockerfile中处理这个问题? - Polaiah Bodeddula
缺少多个响应所需的 :( !!! - Thư Sinh
在Dockerfile中使用_expect_的示例,选择欧洲时区: RUN sudo 8 echo | apt-get install -yq expect - JPBlanc

6

如果您有多个问题需要回答:

printf "answer1\nanswer2\nanswer3" | <your_script.sh>

每个答案都由\n字符分隔。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接