10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker の Alpine Linux でタイムゾーンを JST にする

Posted at

Alpine Linux でイメージを作成する際に、タイムゾーンを設定する際に悩んだので備忘録として。

タイムゾーンを JST にするために、ググって出てきた以下を Dockerfile に記述した。

FROM alpine

RUN apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata

このイメージを環境変数 TZ=Asia/Tokyo を指定しつつ起動すると、タイムゾーンが GMT になってしまった:thinking:

$ docker run --rm -e TZ=Asia/Tokyo alpine-tz date
Fri Apr 20 02:10:04 GMT 2018

調べてみると、環境変数 TZ が定義されていると /etc/localtime を参照しないらしい。
tzset(3)
date(1)

試しに TZ を指定しないで起動すると JST になった。

$ docker run --rm alpine-tz date
Fri Apr 20 11:12:26 JST 2018

よく調べないで使うとハマりますね…。

ちなみに、Java などアプリケーションによっては TZ を指定しないとタイムゾーンが認識されないケースもある。
この場合は tzdata を削除しないでおくか、サイズを少しでも削りたい場合は以下のようにファイルをコピーする・・・のは、いまいち?

RUN apk --no-cache add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata && \
    mkdir -p /usr/share/zoneinfo/Asia && \
    cp /etc/localtime /usr/share/zoneinfo/Asia/Tokyo
10
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?