別の記事を書く目的で新しいLaravelプロジェクトをインストールしようとしたときに、どうせならPHP 8.3を使ってみようと思ったものの、環境構築で一瞬悩んだので備忘録。
新規Laravelプロジェクトダウンロード & インストール
公式ドキュメントの通りインストールしてみます。
curl -s https://laravel.build/php83-laravel | bash
たちあげてバージョンを確認してみると・・・8.2ですね。
# Laravelのプロジェクトディレクトリに移動
cd php83-laravel
# コンテナ立ち上げ
./vendor/bin/sail up -d
# コンテナ名確認
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
934dda75ba0a sail-8.2/app "start-container" 6 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:5173->5173/tcp, :::5173->5173/tcp, 8000/tcp example-app-laravel.test-1
# バージョン確認
docker exec -it php83-laravel-laravel.test-1 php -v
PHP 8.2.13 (cli) (built: Nov 24 2023 08:47:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
with Zend OPcache v8.2.13, Copyright (c), by Zend Technologies
with Xdebug v3.3.0, Copyright (c) 2002-2023, by Derick Rethans
ドキュメントを再確認
再度確認してみると、Getting Startedのページとは別のページに記載がありました(そばに書いておいてほしい)。
docker-compose.yml
ファイルをいじりなさいということですね。
The default PHP version used by Sail is currently PHP 8.2. To change the PHP version that is used to serve your application, you should update the build definition of the laravel.test container in your application's docker-compose.yml file:
docker-compose.ymlを編集する
ドキュメントの指示に従って、該当する部分を変更します。
laravel.test:
build:
# context: ./vendor/laravel/sail/runtimes/8.2
context: ./vendor/laravel/sail/runtimes/8.3 # ここを変更
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
# image: sail-8.2/app
image: sail-8.3/app // ここも変更
再ビルドして立ち上げ
無事PHP8.3でアプリケーションコンテナが立ち上がっていました。
# ビルドと立ち上げ
$ ./vendor/bin/sail build --no-cache && ./vendor/bin/sail up -d
# バージョン確認
$ docker exec -it example-app-laravel.test-1 php -v
PHP 8.3.0 (cli) (built: Nov 24 2023 08:50:08) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.0, Copyright (c) Zend Technologies
with Zend OPcache v8.3.0, Copyright (c), by Zend Technologies
with Xdebug v3.3.0, Copyright (c) 2002-2023, by Derick Rethans
実際にビルドファイルの構成を見に行ってみる
無事動いたものの、せっかくなので構成を見に行ってみましょう。
対象のディレクトリを探しに行くと、8.2
以外にも8.0
~ 8.3
までディレクトリがあります。
Laravel Sailのパッケージの一部として複数のPHPバージョンの設定ファイルを同梱しておくことで、PHPのバージョン変更 = 再インストールしなおし、ではなく任意のタイミングで再ビルドをかけるだけでよくなっているんですね。
ありがたや。