Edited at

MySQL5.7の公式イメージでUTCがAsia/Tokyoで上書きされた

5.7以外のバージョンでは確認していない(もしくは覚えていない)のですが

MySQLの公式Dockerイメージを使ったコンテナ内で

mysql> SELECT now() as local, CONVERT_TZ(now(), 'Asia/Tokyo', 'UTC') as utc from dual;

と打ったとき、

local も UTC も同じ値が返ってきたのでなんでだろうと思って

$ cat /usr/share/zoneinfo/UTC

とか打ったら

...

JST-9

と、 内容が/usr/share/zoneinfo/Asia/Tokyoと同じになっていて

戦慄したのが事の発端です。

このときはEC2のECS(Fargateではないということ)でコンテナを動かしていて

タスク設定で /etc/localtime をホストからコンテナにマウントしていました。

というわけで、mysqlのコンテナに入って /etc/localtime を見てみたら...

/etc/localtime -> /usr/share/zoneinfo/Etc/UTC

/usr/share/zoneinfo/Etc/UTC -> ../UTC

つまりこれで、

ホストのAsia/Tokyoデータでコンテナ内のUTCデータが上書きされたってこと

...ですかね

こわっ

環境変数にTZ=Asia/Tokyoを設定すればいいんですが

(確かDocker公式的にはこっち推奨でしたっけ)

最初何が起こってるかわからなかった...

/etc/localtime って以前はかなり常習的にマウントしてたんだけど

こんなことになってたっけな...

認識違いや不備ありましたらご指摘くださいm(_ _)m