はじめに
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',
これだけでした。