[Docker] build tzdata タイムゾーン選択回避方法(ubuntu)

docker build tzdata タイムゾーン選択回避方法

なぜか突然Dockerfileをbuildする時にtzdataでタイムゾーンの選択を求められるようになりました。

以前はこんな画面出なかったのに…

Dockerfile


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

GitHubではこのコードを実行すると何やらインストールできるらしいことが書いてあったので実行してみました。

RUN apt-get update && apt-get install -y --no-install-recommends apt-utils

しかし、結果はNG

参考にしているものが古かったのでバージョンを上げたら解決するかな?と思ってUbuntuのバージョンを18.04にしてみたけどダメ…

Gitのインストールが原因??

こちらの記事を読んでいるとGitのパッケージインストール後にtzdataをインストールするとのこと。

試しにgit と tzdata のインストールする順番を変えてみる

Dockerfile


RUN apt-get update && 
RUN apt-get update && \
    apt-get upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
	tzdata \ # ←gitより前に持ってくる
	git \

あれ…?効果なし

気を取り直してgit と tzdate のRUNを分けてインストールすると…

Dockerfile

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y
# timezone setting
ENV TZ=Asia/Tokyo 

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y \
	git \

無事インストールできました!
タイムゾーンも日本(JST)になっていることが確認できました。

root@b8dfdd02ae92:/# date
Tue Jul 31 22:18:18 JST 2018

標準時(イギリス)にでも住んでいない限りタイムゾーンの設定は必要なのでDockerを利用するときの参考にしてみてください!

補足

ENV DEBIAN_FRONTEND=noninteractiveをすると環境変数が作ったイメージに残ってしまうため、tzdataをインストールするときだけDEBIAN_FRONTEND=noninteractiveを設定するのが正しいようです。

ryneさん教えていただきありがとうございますm(_ _)m

8 Comments

takeweb0014

貴重な情報、ありがとうございます。
丁度困っていたので、助かりました!

返信する
inductor

DEBIAN_FRONTEND=noninteractive はRUNではなくENVに入れないとうまく動かない気がします

返信する
アバター画像 sleepless-se

inductorさん
ご指摘ありがとうございます!修正しました。

環境変数をRUNしても意味ないですね(;´∀`)

返信する
ryne

DEBIAN_FRONTEND=noninteractive をENVで入れるのは正しくありません。この方法でbuildすると作ったイメージに環境変数 DEBIAN_FRONTEND=noninteractive が含まれてしまいます。
正しくは
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
のように、tzdataのインストールだけ変数 DEBIAN_FRONTEND=noninteractive を設定した状態で実行させることです。
この方法ならちゃんと実行され、イメージの環境変数には残りません。

返信する
アバター画像 sleepless-se

ryneさん教えていただきありがとうございます。
記事を修正いたしました。

返信する

sleepless-se へ返信するコメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください