メモ > 技術 > フレームワーク: Laravel9 > 環境構築
環境構築
■準備
\\wsl$\Ubuntu-20.04\home\refirio\docker\laravel\code
C:/windows/System32/drivers/etc/hosts
127.0.0.1 laravel.local
■インストール
インストール 9.x Laravel
https://readouble.com/laravel/9.x/ja/installation.html
Sailを使用する場合、以下のようなコマンドから始める
Sailを使用しない場合、これまでどおりcomposer create-projectから始めることもできる(詳細は上記のページを参照)
$ cd /home/refirio/docker/laravel/code
$ curl -s https://laravel.build/laravel9 | bash
curl によって必要なファイルががダウンロードされる
また、laravel9 が作成され、その中に必要なファイルも配置される
この時点で、laravel9 をGit管理対象にしておく
具体的にはSourcetreeで「Create」からフォルダを選択し、コミット対象のファイルは初期コミットとしてコミットしておく
以下を実行
$ cd laravel9
$ ./vendor/bin/sail up
15分ほどでイメージのダウンロードが完了した
引き続きDockerfileの内容により諸々が取得される
20ほどで起動した(-d を付けていないからバックグラウンドでは無い)
ブラウザから以下にアクセスして、Laravelの画面が表示された
http://localhost/
表示を確認出来たら、いったん Ctrl+C で終了する
■コマンドの調整
$ cd /home/refirio/docker/laravel/code/laravel9
$ sail
Command 'sail' not found
.profile の最後にaliasのための設定を追加
$ vi ~/.profile
コンソールを再起動し、パス指定なしでsailコマンドを実行できることを確認する
# set alias for sail
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
$ cd /home/refirio/docker/laravel/code/laravel9
$ sail
Laravel Sail
■起動と終了
以下でデーモンを起動できる
$ cd /home/refirio/docker/laravel/code/laravel9
$ sail up -d
以下にアクセスして表示を確認する
http://laravel.local/
以下のように操作できる
「sail shell」でシェルに入ることができるが、sailコマンド経由で直接操作することもできる
$ sail shell
$ sail php -v
$ sail composer -V
$ sail artisan -V
$ sail node -v
$ sail npm -v
$ sail mysql
$ exi
各バージョンは以下のようになっていた
$ sail php -v
PHP 8.1.27 (cli) (built: Dec 21 2023 20:19:54) (NTS)
$ sail composer -V
Composer version 2.7.2 2024-03-11 17:12:18
$ sail artisan -V
Laravel Framework 9.19.0
$ sail node -v
v18.20.0
$ sail npm -v
10.5.0
$ sail mysql
Server version: 8.0.29 MySQL Community Server - GPL
以下でデーモンを終了できる
$ sail down
■環境の調整
Sail環境の現状を確認する
タイムゾーンがUTCで、文字コードがlatin1になっている箇所があるので調整する
$ sail shell
$ date
Tue Apr 2 09:25:59 UTC 2024
$ exit
$ sail mysql
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2024-04-02 09:28:17 |
+---------------------+
1 row in set (0.00 sec)
> 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.00 sec)
Sail環境をカスタマイズする
以下のコマンドを実行すると、dockerフォルダ内にDocker用のファイルが出力され、これを編集することでSail環境をカスタマイズできる
また docker-compose.yml も編集され、vendor/laravel/sail/runtimes/8.1 内ではなく docker/8.1 内のファイルが参照されるようになる
$ sail artisan sail:publish
以下のとおり、タイムゾーンと文字コードを変更する
docker/8.1/Dockerfile
ENV TZ=UTC
↓
ENV TZ='Asia/Tokyo'
docker/8.1/my.cnf(新規に作成)
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin
default-time-zone = 'Asia/Tokyo'
[client]
default-character-set = utf8mb4
docker-compose.yml
volumes:
- 'sail-mysql:/var/lib/mysql'
↓
volumes:
- 'sail-mysql:/var/lib/mysql'
- './docker/8.1/my.cnf:/etc/my.cnf'
Dockerfileを編集したので、ビルドし直す
$ sail down
$ sail build --no-cache
$ sail up -d
ビルド中に以下のエラーになった
E: Release file for http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease is not valid yet (invalid for another 3d 14h 39min 16s). Updates for this repository will not be applied.
PCとWSLの時刻差が大きいと発生するみたい
WSLの時刻を調整
$ date
Wed Apr 3 06:32:54 JST 2024
$ sudo hwclock --hctosys
$ date
Sat Apr 6 22:07:11 JST 2024
ビルド中に以下のエラーになった
npm ERR! code EBADENGINE
npm ERR! engine Unsupported engine
npm ERR! engine Not compatible with your version of node/npm: npm@10.5.0
npm ERR! notsup Not compatible with your version of node/npm: npm@10.5.0
npm ERR! notsup Required: {"node":"^18.17.0 || >=20.5.0"}
npm ERR! notsup Actual: {"npm":"8.19.4","node":"v16.20.2"}
nodeのバージョンは18もしくは20が必要となっているので、さらに以下のとおり調整して再度ビルドする
docker/8.1/Dockerfile
ARG NODE_VERSION=16
↓
ARG NODE_VERSION=18
完了したら、変更を確認する
タイムゾーンがJSTで、文字コードがutf8mb4になっていることを確認できる
$ sail shell
$ date
Sat Apr 6 22:24:09 JST 2024
$ exit
$ sail mysql
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2024-04-06 22:24:38 |
+---------------------+
1 row in set (0.00 sec)
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> QUIT