是否可以以某种方式回答使用 apt-get 安装某些软件包时以对话框形式出现的问题?
例如,我正在尝试设置一个包含以下内容的容器mail-stack-delivery
包装内含:
FROM ubuntu
RUN apt-get install -y mail-stack-delivery
然而,该 dockerfile 在构建时会生成数十个错误,大致如下:
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
据我了解,我只是无法响应对话框,但是有什么方法可以传递参数来提前回答每个问题吗?我知道这只是更改一些配置,所以我可以在事后执行此操作,但可能最好让安装脚本执行此操作,以便一切都正确设置。
请参阅此处的讨论:https://github.com/docker/docker/issues/4032。简而言之,设置ENV DEBIAN_FRONTEND noninteractive
不推荐,因为它仍然存在于最终图像中,即使运行类似的东西docker run -i -t ... bash
。因此建议省略DEBIAN_FRONTEND
并接受警告,或者为每个命令明确指定它,例如RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package
.
幸运的是,新ARG
指令设置仅在构建期间存在的变量,因此现在可以使用在DockerFile
但最终的图像并不持久:ARG DEBIAN_FRONTEND=noninteractive
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)