LoginSignup
17
16

ローカルマシンにPHPもcomposerもインストールしない人のLaravel Sailの使い方

Last updated at Posted at 2021-04-28

2024/04/08 追記
「使いづらい点」を主に紹介していましたが、改善できましたので、「使い方」を紹介します。
記事に至らない点があったのですが、ただの批判記事のまま放置になってしまっておりました。
すみませんでした。


お疲れ様です。
新しくプロジェクトを構築しようと思い、新し目のソリューションのLaravel Sailを利用してみました。
使ってみた結果、整理のためにまとめます。

公式:
https://readouble.com/laravel/8.x/ja/sail.html
https://readouble.com/laravel/9.x/ja/sail.html
https://readouble.com/laravel/10.x/ja/sail.html
https://readouble.com/laravel/11.x/ja/sail.html

良い点

ローカル環境が爆速で構築できる

すでにDockerを利用している人なら数ステップでローカル環境が構築できます。
docker-compose.yml等を書く必要がありません。

使いづらい点

全体的に、プロジェクト作者のためだけの設定になっているように思います。
これをリモートリポジトリにpushし、他の人がcloneする際に問題が発覚します。

./vendor/bin/sail が .gitignore で無視されている

vendor配下はデフォルトで.gitignoreに記載されているので、git cloneした人はsailコマンドを打つことができません。
また、./vendor/bin/sailの他に./vendor/laravel/sailも必要です。

他の開発者にもLaravel Sailを利用してもらうなら(普通はそうしたいと思いますが)、
vendorの一部のファイルの無視設定をやめるため、vendor配下に以下のファイルを追加するなどの対応をする必要があります。~~
つまり依存パッケージ(sail)をリモートリポジトリにpushできるようにしてしまっているのでいまいちです。

composerのscriptが実行された前提になっている

プロジェクトをcloneした人は自前で以下のコマンドを打つ必要があります。
(もちろんMakefileなどで管理するのでも良い)
(composer createでプロジェクトを作成した人は、composerのscriptが実行されるので何もしなくてもOK)

上記が無いと、コンテナ構築の際に.envの設定を読めないため、
コンテナを作り直さないとrole "root" does not exist docker(PostgreSQLの場合)とか言われてDBに接続できなくなったりします。
upする前に上記コマンドを打って、必ず.envを用意してください。

上記が無いと、No application encryption key has been specified.とか言われてLaravelが実行できません。

composer installされている前提でwebサーバーが動く

プロジェクトをgit cloneしてきたらまず、依存パッケージをインストールするため、composer installしないとLaravelが動きません。
そのためにsail upしますが、webサーバーはcomposer installされていないとエラーを吐いて接続できなくなります。
up -> composer install -> 接続
としたいですが
up -> composer install -> down -> up -> 接続
としないと接続できません。

Dockerイメージをダイレクトに実行する

composer install

composerが自分のマシンにインストールされていなくても、
以下のコマンドを実行して、composer installを実行できます。

docker run -it --rm -v "$PWD":/app composer install

これでvendor配下の依存ファイルがインストールされます。

php artisan sail:install

PHPが自分のマシンにインストールされていなくても、
以下のコマンドを実行して、sail:installを実行できます。

docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:8.2-cli php artisan sail:install

これでdocker-compose.ymlが出来上がります。

sail up

そして、sail upが実行できます!

./vendor/bin/sail up

Docker最高!

17
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16