Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

スリムな 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

dtan4
SRE @ Microservices Platform Team
http://dtan4.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away