我正在使用 Dockerfile 構建一個 docker 鏡像來構建它。我已將ARG DEBIAN_FRONTEND=noninteractiveDockerfile放在開頭以避免構建時出現 debconf 警告。
apt-get install在 Dockerfile 中使用時不會顯示警告。但是,當從包含 apt-get install 命令的 Dockerfile 執行 sh 腳本 (install_dependencies.sh) 時,警告再次出現。我還嘗試DEBIAN_FRONTEND=noninteractive在 sh 腳本本身中進行設定。
我可以通過echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections在 apt-get install 命令之前添加sh 腳本來解決這個問題,但我想避免這種情況,因為腳本中的任何失敗都會使 debconf select 變為非互動式。
Dockerfile:
FROM ubuntu:18.04
# Avoid warnings by switching to noninteractive
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /tmp
# Configure APT --> HERE THE WARNINGS 'debconf: unable to initialize frontend: Dialog' ARE NOT DISPLAYED
RUN apt-get update \
&& apt-get -y upgrade \
&& apt-get install -y \
apt-utils \
dialog \
fakeroot \
software-properties-common \
2>&1
# Install APT packages --> HERE THE WARNINGS 'debconf: unable to initialize frontend: Dialog' ARE NOT DISPLAYED
RUN apt-get update && apt-get install -y \
#
# System packages
iproute2 \
procps \
lsb-release \
sudo \
unattended-upgrades \
dnsutils \
iputils-ping \
xauth \
openssl \
tar \
zip \
#
# Helpers
&& apt-get install -y \
ca-certificates \
curl \
wget \
lsof \
gconf2 \
gconf-service \
#
# Clean up
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
# Install LTE stack dependencies --> HERE THE WARNINGS 'debconf: unable to initialize frontend: Dialog' ARE DISPLAYED
RUN chmod x install_dependencies.sh \
&& export DEBIAN_FRONTEND=noninteractive; ./install_dependencies.sh
install_dependencies.sh:
#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
APT_PACKAGES="lib32z1 \
python-setuptools \
libmysqlclient-dev \
ninja-build"
install_apt_packages() {
sudo apt-get install -y tzdata \
build-essential \
git
for package in $APT_PACKAGES;
do
sudo apt-get -y install "$package";
done
}
main() {
sudo apt-get update && sudo apt-get upgrade -y
install_apt_packages
}
main
編輯:感謝@arkadiusz-drabczyk告訴我從 apt-get 命令中洗掉 sudo,他所說的非常有道理,在執行命令之前環境變數下降。
uj5u.com熱心網友回復:
放入sudo您的腳本,如果您以 root 身份運行,則可以使用它。這也是 DEBIAN_FRONTEND 無效的原因 - sudo 出于安全原因洗掉您當前用戶的環境,您必須使用 -E 選項才能使其作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/373554.html
下一篇:django認證失敗
