我已经设置了以下环境,以便在 apt-get install 期间不会询问任何问题/对话框:
ENV DEBIAN_FRONTEND noninteractive # export DEBIAN_FRONTEND="noninteractive"
这相当于:
export DEBIAN_FRONTEND="noninteractive"
然而,当从 Dockerfile 构建映像时,在一个特定的 Debian/Ubuntu 包安装(使用 apt-get install)结束时,包配置 debconf 显示:
debconf: unable to initialize frontend: Noninteractive # export DEBIAN_FRONTEND="noninteractive"
debconf: (Bareword "Debconf::FrontEnd::Noninteractive" not allowed while "strict subs" in use at (eval 35) line 3, <> line 1.)
debconf: falling back to frontend: Noninteractive
Subroutine BEGIN redefined at (eval 36) line 2, <> line 1.
答案1
它应该是积极劝阻通过 来DEBIAN_FRONTEND
设置。原因是环境变量在构建后仍然存在,例如当您运行 时。这里的设置没有意义。noninteractive
ENV
docker exec -it ... bash
还有另外两种可能的方法:
通过以下方式设置它,
ARG
因为这仅在构建期间可用:ARG DEBIAN_FRONTEND=noninteractive RUN apt-get -qq install {your-package}
需要时可即时设置。
RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get -qq install {your-package}
答案2
好的,问题的根源是:您不能使用 # 在 Dockerfile 中的 ENV 行上添加注释,因为没有定界符来表示“环境变量的结束”,变量名之后的所有内容以及紧随其后的空格都将在变量中。
即使用 Dockerfile 行:
ENV DEBIAN_FRONTEND noninteractive # export DEBIAN_FRONTEND="noninteractive"
变量:
DEBIAN_FRONTEND
将包含以下整行:
noninteractive # export DEBIAN_FRONTEND="noninteractive"
相当于:
export DEBIAN_FRONTEND='noninteractive # export DEBIAN_FRONTEND="noninteractive"'