yanom blog

様々な技術について書きます

docker alpine 3.8でTZを設定する方法

dockerを使っていてコンテナ内でcronを使いたいことってありますよね。
またcron専用コンテナを作る場合、dockerイメージはなるべく小さくしたいのでalpineを使いたい。
あと、コンテナ内でcronを使う際に忘れがちなのがタイムゾーン設定。
というこで、alpineのタイムゾーン設定をJSTにする方法を記載します。

tl;dr

  • tzdataをインストールしましょう。

参考

How can I set the timezone please?

試す

以下の様なDockerfileを作成します。

FROM alpine:3.8

RUN apk update
RUN apk upgrade
RUN apk add ca-certificates && update-ca-certificates
RUN apk add --update tzdata

ENV TZ=Asia/Tokyo
RUN rm -rf /var/cache/apk/*

CMD ["crond", "-f", "-d", "8"]

まずは、ビルド。
ここでは「cron:0.1」というタグを付けておきます。

# ビルド
$ docker build . -t cron:0.1

ビルド出来たら、コンテナを実行します。

# コンテナを作成し実行
$ docker run -it --rm cron:0.1 sh

タイムゾーンが変更されているか確認すると...

$ date
Thu Oct 25 10:40:10 JST 2018

出来てますね!

まとめ

  • alpineにはcrondが入っているので簡単にcronを使用できます。
  • alpineなのでイメージサイズも小さく効率よく扱えます。
  • あと、1コンテナ1プロセスでいい感じ!