MySQL
docker
mysql5.7

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