Dockerfileからビルドする場合、Debian / Ubuntuパッケージのインストールdebconf非対話型インストールは許可されません


29

apt-getのインストール中に質問/ダイアログが表示されないように、次の環境を設定しました。

ENV DEBIAN_FRONTEND noninteractive    # export DEBIAN_FRONTEND="noninteractive"

次と同等です:

export DEBIAN_FRONTEND="noninteractive"

しかし、Dockerfileからイメージを構築する場合、特定のDebian / Ubuntuパッケージのインストールの最後(apt-getインストールを使用)で、パッケージ構成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.

うわー、エラーが見つかりました。DockerfileのENV行にコメントを入れる方法はありません。これは他の人を噛むと確信しているので、私は自分自身に答えるつもりです...

回答:


57

積極的に設定することは推奨されませんDEBIAN_FRONTENDnoninteractive介しましたENV。その理由は、環境変数がビルド後、たとえばを実行しdocker exec -it ... bashたときに持続するためです。この設定はここでは意味がありません。

他にも2つの方法があります。

  1. ARGこれはビルド中にのみ使用可能なため、経由で設定します。

    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get -qq install {your-package}
    
  2. 必要に応じてオンザフライで設定します。

    RUN apt-get update && \
        DEBIAN_FRONTEND=noninteractive apt-get -qq install {your-package}
    

8
投票するためだけにサインアップ
アンドレワーラン

@AndréWerlang:私も!
-gvgramazio

27

OK、問題の原因は次のとおりでした。「end of env variable」と言う区切り記号がないため、#を使用してDockerfilesの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"'

私はほとんど質問をキャンセルしていましたが、検索エンジンとStack Exchangeを使用すると、おそらくいつかここで間違いを見つける人がいるでしょう;-)


5
これが実際の回答である場合は、それをそのまま受け入れて、質問が未回答としてリストされないようにする必要があります。
アンディシン14

4
使用することが推奨されENVためDEBIAN_FRONTEND、以下を参照してくださいgithub.com/docker/docker/issues/4032
k0pernikus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.