DockerでLaravel8環境を作った際にタイムゾーン設定でハマった話


はじめに

DockerでPHP公式イメージである「PHP:8.0-apache」を利用してLaravel8.4環境を構築した際に、タイムゾーン設定でハマった話。

環境

docker -v

Docker version 20.10.12

docker compose version

Docker Compose version v2.1.1

Ubuntu 20.40(WSL2)

上記環境でLaravelインストールまで終わった状態。

失敗手順

php.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

上記「php.ini」をホスト側(ローカル)に作成。
最低限の設定を記述し、コンテナ側「/usr/local/etc/php/php.ini」にマウント。
この状態でLaravel上で「date("Y-m-d H:i:s")」を実行してみると、UTC/協定世界時の日時が表示される。

なんで???と思いつつphpinfo()のdate欄を確認。
「date.timezone」は「Asia/Tokyo」になっているが、「Default timezone」は「UTC」のまま、、、
コンテナ停止・イメージ削除してからコンテナを再度起動しても変わらず。

成功手順

上記の失敗手順に加えて、Laravelソース内「config/app.php」の該当箇所を変更

'timezone' => 'UTC',

↓↓

'timezone' => 'Asia/Tokyo',

これだけでした。