如何在Docker构建过程中接受许可协议?

bwntbbo3  于 2023-10-16  发布在  Docker
关注(0)|答案(7)|浏览(185)

如何编写可以通过yes来提示许可协议的Dockerfile?
1.在Dockerfile目录下,docker build -t "{user}/{tags}" .然后构建失败。

  1. docker logs {container id},显示消息如下:
  1. Preparing to unpack .../ttf-mscorefonts-installer_3.4+nmu1ubuntu2_all.deb ...
  2. debconf: unable to initialize frontend: Dialog
  3. debconf: (TERM is not set, so the dialog frontend is not usable.)
  4. debconf: falling back to frontend: Readline
  5. Configuring ttf-mscorefonts-installer
  6. TrueType core fonts for the Web EULA END-USER LICENSE AGREEMENT FOR
  7. MICROSOFT SOFTWARE
  8. ...
  9. Do you accept the EULA license terms? [yes/no]
7vux5j2d

7vux5j2d1#

对我来说,安装前的ACCEPT_EULA=y完成了这项工作,就像

  1. RUN apt-get update && ACCEPT_EULA=Y apt-get install PACKAGE -y
lvmkulzt

lvmkulzt2#

在这里讨论issue: [16.04] debconf: delaying package configuration, since apt-utils is not installed
我在Dockerfile中添加了这三行代码:

  1. ENV DEBIAN_FRONTEND noninteractive
  2. ENV DEBIAN_FRONTEND teletype
  3. RUN apt-get update -y && apt-get install -y --no-install-recommends apt-utils \

终于可以搭建Docker镜像了!

biswetbf

biswetbf3#

我能够在Dockerfile的构建过程中通过管道安装来同意许可证,该安装需要使用yes命令进行确认,该命令将yyes发送到任何确认提示符(参见here)。以前,我的构建过程仍然像你描述的那样在[yes/no]提示符上卡住。请注意,this answer中描述的步骤仍然是必需的。如果没有它们,yes命令似乎不够,因为构建过程仍然会在[yes/no]提示符上卡住。
这就是我在dockerfile中的内容:

  1. ENV DEBIAN_FRONTEND noninteractive
  2. ENV DEBIAN_FRONTEND teletype
  3. RUN yes | apt-get install <package>

这样,我就可以在终端中自动接受提示:

它实际上也适用于这些“debian确认对话框”(不知道正确的术语):

也许这会有所帮助:)

i2loujxw

i2loujxw4#

您可以尝试基于此的解决方案:https://unix.stackexchange.com/a/106553
1.首先手动安装软件包(即在现有容器上,在本地计算机上)

  1. $ apt-get install -y PACKAGE

1.安装后,获取许可证

  1. $ debconf-get-selections | grep PACKAGE
  2. PACKAGE PACKAGE/license string y

debconf设置
1.现在使用Dockerfile构建Docker镜像:

  1. ARG DEBIAN_FRONTEND=noninteractive
  2. RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
  3. echo PACKAGE PACKAGE/license string y | debconf-set-selections && \
  4. apt-get install -y PACKAGE

您可能需要为debconf-set|get-selections安装debconf-utils

展开查看全部
tmb3ates

tmb3ates5#

对我有用的是使用expect
已安装的依赖项:apt-get install -y expect
然后执行:

  1. /usr/bin/expect -<< EOS
  2. spawn /opt/splunkforwarder/bin/splunk start \
  3. --accept-license --answer-yes --no-prompt
  4. expect eof
  5. EOS

没想到splunk start在构建docker镜像时卡住了。

nfzehxib

nfzehxib6#

对于在Dockerfile中安装ttf-mscorefonts-installer Ubuntu包,上述解决方案都不起作用。最终对我起作用的是:

  1. echo "ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true" | debconf-set-selections \
  2. && DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends ttf-mscorefonts-installer
vfh0ocws

vfh0ocws7#

您可以在Dockerfile中的行尾写入-y
范例:

  1. RUN apt-get update
  2. RUN apt-get install netcat -y

相关问题