99
75

More than 5 years have passed since last update.

Alpine Linux でタイムゾーンを変更する

Posted at

スリムな Docker イメージを作るため、gliderlabs/alpine イメージをベースにバイナリを一個だけポンと置いて運用するみたいなことをしています。
gliderlabs/alpine イメージは(というかほとんどの OS イメージは)タイムゾーンが GMT (UTC+0) のままなので、時刻依存の作業をさせるときには気をつけないといけません。日本時間 (UTC+9) の感覚で書いたら、9時間遅れて実行されたとかログの時刻がずれるとか起こりえます。

まっさらの状態で date を打つと…

$ docker run --rm gliderlabs/alpine:3.3 date
Sat Feb  6 06:47:37 UTC 2016

タイムゾーンの設定

メジャーな Linux ディストリビューションと同じく、/etc/localtime を変更すればよいです。zoneinfo とかはそのままだと用意されていないので、apk で tzdata パッケージをインストールする必要があります。

Dockerfile で日本標準時 Asia/Tokyo に設定する場合は以下のようになります。ここで欲しいのは /usr/share/zoneinfo/Asia/Tokyo だけなので、tzdata はそれだけ抜き取ったら消しちゃいます。

FROM gliderlabs/alpine:3.3

RUN apk --update add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata && \
    rm -rf /var/cache/apk/*

この Dockerfile からビルドしたイメージで date を叩くと…

$ docker run --rm alpine-jst date
Sat Feb  6 15:48:56 JST 2016

JST になりました :tada:

おわりに

タイムゾーンとか文字コードとか全角文字とか辛いので、イギリスに住みたいですね。

REF

99
75
2

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
99
75