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

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

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

  1. docker logs {container id},显示消息如下:
Preparing to unpack .../ttf-mscorefonts-installer_3.4+nmu1ubuntu2_all.deb ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring ttf-mscorefonts-installer

TrueType core fonts for the Web EULA END-USER LICENSE AGREEMENT FOR 
MICROSOFT SOFTWARE
...
Do you accept the EULA license terms? [yes/no]
7vux5j2d

7vux5j2d1#

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

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中添加了这三行代码:

ENV DEBIAN_FRONTEND noninteractive
ENV DEBIAN_FRONTEND teletype

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中的内容:

ENV DEBIAN_FRONTEND noninteractive
ENV DEBIAN_FRONTEND teletype
RUN yes | apt-get install <package>

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

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

也许这会有所帮助:)

i2loujxw

i2loujxw4#

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

$ apt-get install -y PACKAGE

1.安装后,获取许可证

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

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

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

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

tmb3ates

tmb3ates5#

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

/usr/bin/expect -<< EOS
    spawn /opt/splunkforwarder/bin/splunk start \
        --accept-license --answer-yes --no-prompt
    expect eof
EOS

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

nfzehxib

nfzehxib6#

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

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

vfh0ocws7#

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

RUN         apt-get update
RUN         apt-get install netcat -y

相关问题