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