1. ホーム
  2. ubuntu

[解決済み] dockerでのインストール時に、ダイアログの質問に答えることは可能でしょうか?

2022-02-07 22:45:35

質問内容

apt-get を使っていくつかのパッケージをインストールするときに表示されるダイアログに、どうにかして答えることはできないでしょうか?

例えば、私は、このコンテナの中に mail-stack-delivery というパッケージがあります。

FROM ubuntu

RUN apt-get install -y mail-stack-delivery

しかし、そのdockerfileはビルド時に以下のようなエラーを何十個も発生させます。

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 11.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin: 

私の理解では、単にダイアログに応答できないだけなのですが、各質問に答えるためのパラメータを事前に渡す方法はないでしょうか?いくつかの設定を変更するだけなので、後から行うこともできますが、おそらくインストールスクリプトにそれを行わせて、すべてが適切に設定されるようにする方が良いと思います。

解決方法は?

こちらのディスカッションをご覧ください。 https://github.com/docker/docker/issues/4032 . 要するに ENV DEBIAN_FRONTEND noninteractive のようなものを実行しても、最終的な画像に残るので、あまりお勧めできません。 docker run -i -t ... bash . したがって DEBIAN_FRONTEND という警告が出ますが、これを我慢するか、コマンドごとに明示的に指定します。 RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q package .

幸いなことに、新しい ARG ディレクティブはビルド時にのみ有効な変数を設定するので、 よりエレガントなソリューションが可能になりました。 DockerFile が、最終的な画像には残りません。 ARG DEBIAN_FRONTEND=noninteractive .