it-swarm-ja.com

Docbotコンテナーにcertbotをインストールする際のtzdataとのユーザーの対話を回避する

Ubuntu 16.04イメージのあるdocker環境に certbot をインストールしたい:

例えば:

docker run -it ubuntu:16.04 /bin/bash

コンテナ内にいるとき、certbotをインストールする最も簡単な方法は、ユーザーの介入が必要なため機能しません。

apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

問題はtzdataであり、この対話型ダイアログで停止します。

Extracting templates from packages: 100%
Preconfiguring packages ...
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

 1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
 2. America     5. Arctic     8. Europe    11. SystemV
 3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 

奇妙なことに、PPAを追加する前にtzdataをインストールすると動作します。

apt-get update && \
apt-get install -y tzdata && \
apt-get install -y software-properties-common && \
add-apt-repository -y -u ppa:certbot/certbot && \
apt-get install -y certbot

質問:

  • なぜtzdataをインストールするか、ppaを追加する前か後かで違いが出るのですか?
  • Certbotをインストールするときに対話型ダイアログを回避するためのより良いアプローチはありますか?
93
Philipp Claßen

対話型ダイアログなしでdpkg(Aptなどの他のツールの背後で)を実行するには、1つの環境変数を次のように設定できます。

DEBIAN_FRONTEND=noninteractive

たとえば、 ARG を使用してDockerfileに設定できます。

ARG DEBIAN_FRONTEND=noninteractive
89
Aditya Pawaskar

Ubuntu 18.04では、Dockerfileを実行しました。

ENV TZ=Europe/Minsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt instal....
23
Terentev Maksim

TL&DR: DockerFile内

ENV DEBIAN_FRONTEND=noninteractive 

理由:

特定のインストーラーは、ニースのフロントエンドを持つことで「インストール」を簡単にします。これは手動インストールの場合は素晴らしいことですが、自動インストール中に問題になります。

環境文字列に以下を配置することにより、対話型インストールを上書きできます。

乾杯

10
FlyingV

コマンドの前にDEBIAN_FRONTEND=noninteractiveを設定すると、ENV DEBIAN_FRONTEND=noninteractiveが後のコマンドまたは子イメージに影響を与えることを回避できます。

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
        tzdata \
    && rm -rf /var/lib/apt/lists/*
3
pyfreyr