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プロセスでいい感じ!