久しぶりにLaravelを0から導入しようとしたら環境構築の方法が変わってた
はじめに
Laravel関連の記事を書くときにサクッとLaravelの環境を構築したいなと思い、環境構築の方法をブログにしようとしたところ、ドキュメントの記載が私が知ってる方法とは完全に別物になっていたので、初見で構築していきます。
いつから変わったのか
7.xのinstallationは私が知っている方法のようです。
https://laravel.com/docs/7.x#installing-laravel
8.xから構築方法が変わっていますね。
https://laravel.com/docs/8.x/installation#getting-started-on-macos
私が以前Laravelを導入したときはまだ7系だった気がするので、確かに最新の環境構築方法は使ったことなさそうです。
具体的には、7.xまではOSに直接インストールする方法が書かれていますが8.xからDocker(Laravel Sail)での開発を前提とする書き方になっていますね。
実際にやってみる
ここからは実際にLaravel 9の環境を構築していきます。
実行環境
- MacBook Pro(14インチ、2021)
- Docker Desktop 4.8.2 (79419)
- Engine: 20.10.14
- Compose: v2.5.1
Step1
curl -s "https://laravel.build/example-app" | bash
example-app
のところがそのままディレクトリの名前になります。
途中でパスワードの入力を求められます。
> curl -s "https://laravel.build/example-app" | bash Unable to find image 'laravelsail/php81-composer:latest' locally latest: Pulling from laravelsail/php81-composer eb9a2845ed12: Pull complete 1847f78773be: Pull complete 6ff48a7e6ce3: Pull complete 8d3c1623fb1a: Pull complete ed88b3f807f2: Pull complete 53674ff3d8e3: Pull complete c0d6d82777d8: Pull complete 4a5c216bb23d: Pull complete f4a309a79847: Pull complete 0c21c0241293: Pull complete a40c40f5805e: Pull complete 9001901c200e: Pull complete cb38a3bbfb68: Pull complete 5393bb85a813: Pull complete Digest: sha256:b27920b769ad8dc036a9ede3ae36f51a280d370ec7d125e77ca1924c9fa21dbb Status: Downloaded newer image for laravelsail/php81-composer:latest _ _ | | | | | | __ _ _ __ __ ___ _____| | | | / _` | '__/ _` \ \ / / _ \ | | |___| (_| | | | (_| |\ V / __/ | |______\__,_|_| \__,_| \_/ \___|_| Warning: TTY mode requires /dev/tty to be read/writable. Creating a "laravel/laravel" project at "./example-app" Info from https://repo.packagist.org: #StandWithUkraine Installing laravel/laravel (v9.1.8) - Downloading laravel/laravel (v9.1.8) - Installing laravel/laravel (v9.1.8): Extracting archive Created project in /opt/example-app > @php -r "file_exists('.env') || copy('.env.example', '.env');" Loading composer repositories with package information Info from https://repo.packagist.org: #StandWithUkraine Updating dependencies Lock file operations: 108 installs, 0 updates, 0 removals - Locking brick/math (0.9.3) (中略) - Locking webmozart/assert (1.10.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 108 installs, 0 updates, 0 removals - Downloading doctrine/inflector (2.0.4) (中略) - Downloading spatie/laravel-ignition (1.2.3) - Installing doctrine/inflector (2.0.4): Extracting archive (中略) - Installing spatie/ignition (1.3.1): Extracting archive - Installing spatie/laravel-ignition (1.2.3): Extracting archive 66 package suggestions were added by new dependencies, use `composer suggest` to see details. Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: laravel/sail Discovered Package: laravel/sanctum Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Discovered Package: spatie/laravel-ignition Package manifest generated successfully. 78 packages you are using are looking for funding. Use the `composer fund` command to find out more! > @php artisan vendor:publish --tag=laravel-assets --ansi --force No publishable resources for tag [laravel-assets]. Publishing complete. > @php artisan key:generate --ansi Application key set successfully. Application ready! Build something amazing. Sail scaffolding installed successfully. Please provide your password so we can make some final adjustments to your application's permissions. Password: Thank you! We hope you build something incredible. Dive in with: cd example-app && ./vendor/bin/sail up
Step2
cd example-app && ./vendor/bin/sail up -d
これでdockerが立ち上がって環境構築完了です。
所感
簡単すぎて拍子抜けしました。頑張ってDockerfileやdocker-compose.ymlを書いていたのが懐かしいですね。
もちろん、実用レベルではこの方法で導入してもさらにDockerfileやdocker-compose.ymlなどを調整する必要がありそうですが、取り敢えず手元で何か試してみる程度であればこれで十分そうです。
注意点
現時点(2022-05-27)では https://laravel.build
ではPHP8.1が入るようです。Laravel Sailも現状PHP 8.1までしか対応していないようです。