久しぶりに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の環境を構築していきます。

laravel.com

実行環境

  • 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までしか対応していないようです。