Dockerコンテナのタイムゾーンを設定する
DockerコンテナのタイムゾーンをJSTにするにはどうするかという話。
Dockerコンテナのタイムゾーンが9時間遅れてしまっていた。
root@d38ce651a96c:/etc# date
Sat Apr 18 05:18:33 Japan 2020
どういう設定になっていたのかというと、これ。
docker-compose.yml
...
services:
db:
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Tokyo
apache2:
volumes:
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Japan
上の記述はいずれも一部分だけを抜き出したものである。
ローカルの /etc/localtime をそのまま Dockerコンテナにもってきているだけである。
でも、これが効いていない。
解決法
Dockerコンテナ側で tzdata をインストールする。
(ubuntu)
RUN apt-get install -y tzdata
あるいは (centos)
RUN yum -y install tzdata
(2022.03.22 追記)
あるいは (Alpine)
RUN apk add tzdata
(2022.05.07 追記)
docker-compose.ymlは以下のようにする。
docker-compose.yml
...
services:
db:
environment:
TZ: Asia/Tokyo
apache2:
environment:
TZ: Japan
つまり、volumes で /etc/localtime を読み込んでいる部分を削除する。
これだけでいける。
訂正 (2022.03.24)
上記、docker-compose.yml の記述のところ
TZ: Japan
ではなくて、
TZ: Asia/Tokyo
である。
参考
カテゴリー: Docker, memo
タグ: Docker, timezone, tz-data
カウント: 283