前回に続き、Laravel sailでの開発環境を構築する際のTips。今回はDocker周辺の整備について、タイムゾーン・MySQL文字コード設定の2点を取り上げる。
目次
①タイムゾーンを変更する
◼️変更前
Sun Sep 24 14:32:54 UTC 2023
ルートディレクトリ内にdockerディレクトリ作成
下記コマンドを実行することで、アプリケーションのルートディレクトリ内にdockerディレクトリが作成される。
sail artisan sail:publish
作成されたdockerディレクトリ配下のファイルを変更することでカスタマイズが可能となる。
タイムゾーンを変更する(UTC→JST)
docker/8.2/Dockerfile
ENV TZ=UTC ↓ ENV TZ='Asia/Tokyo'
なお、dockerディレクトリ配下の参照先はymlファイルに定義している。
docker-compose.yml
services: laravel.test: build: context: ./docker/8.2
確認
# イメージ再ビルド sail build --no-cache # コンテナ起動 sail up -d # コンテナ接続 sail shell date
◼️変更後
Sun Sep 24 23:53:52 JST 2023
②MySQLの文字コードを変更する
◼️変更前
mysql> show variables like '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.01 sec) mysql>
設定ファイル作成
my.cnfファイルを新規作成する。MySQLの設定ファイルとなる。各セクションの定義は下記参照。
docker/8.2/my.cnf
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character_set_server=utf8mb4 collation-server=utf8mb4_bin
volumesに作成したファイルを追加する
docker-compose.yml
mysql: volumes: - './docker/8.2/my.cnf:/etc/my.cnf'
確認
(※要コンテナ再起動)
# コンテナ接続 sail mysql
◼️変更後
mysql> show variables like '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql-8.0/charsets/ | +--------------------------+--------------------------------+ 8 rows in set (0.01 sec) mysql>
Laravel sailでの開発環境構を構築する際に、併せて設定しておきたい内容2選を紹介した。主に備忘のためであるが、ご参考まで。