Laravel

Laravel8 sailで環境構築

更新日:

とにかく進歩が早いLaravel。
セマンティックバージョニングになった6あたりから結構な速度で機能を乗せて来た感がある.
付いていくのがなかなか大変というのはある.
開けた口に無理やり食べ物を押し込んでくるような強引さの中にセンスの良さを感じ取れるので、
ちょっと付いて行ってみることにする.

Laravel sail

Laravel公式が用意するDocker開発環境を操作する軽量なコマンドラインインターフェース.
ポイントは、コンテナの外部からコンテナ内のLaravelに対してコマンドを実行できる点.
dockerコマンドをラップし、コンテナの内部で実行した結果を応答する仕組みとなっている.
フルスタックフレームワークであるLaravelらしく何でも内包してしまう.

composerやartisanコマンド実行のために、わざわざdockerコマンドを叩くのは辛い.
sailが無いとdockerコマンドを叩きまくるか、コンテナに入って作業する必要がある.
sailを使うことで、コンテナの中に入らず外からかsailコマンドを実行できる.

こんな風にするとdockerの上位に来る仕組みを作れるのか、と結構感動.

sailでプロジェクトを作る

既存のプロジェクトにsailを導入するパターンと、新規にプロジェクトを作成するパターンの2通りがある.
今回は新規にプロジェクトを作成していく.

https://laravel.build/example-app というURLはShellScriptのコードを返す.
withの後ろにインストールしたいミドエウウェアを指定する.
今回はmysqlだけ. カンマ区切りで複数指定可.

ちなみに、https://laravel.build/example-appは以下のShellScriptを返す.
そのShellScriptは何をやっているかというと.

  • laravelsail/php80-composerというイメージからコンテナを起動する.
  • laravel newコマンドでプロジェクトを作成する.
  • artisan sail:installコマンドを実行する.
  • ディレクトリのOwnerを変更する. (パスワードが要求される)

sailでコンテナを立ち上げる

要はdocker-compose upをラップしたsail upコマンドを叩く.
PHPのbundlerであるcomposerの仕様上, vendor 以下にモジュールがインストールされる.
sailコマンドも ./vendor/bin/ に入っている. そこで ./vendor/bin/sail up を実行する.

dockerそのものなので, Ctrl+Cで落ちる.
もちろん、./vendor/bin/sail up -d によりバックグラウンドで立ち上がる.

ブラウザからhttp://localhostを開く

あっさり開けた.

ちなみに Dockerfile内で /usr/local/bin/start-containerを実行している.
start-container内ではsupervisordによりLaravelのビルトインサーバをデーモン化している.

supervisord.confは以下の通り.

sailでLaravelのバージョンを確認してみる

試しにコンテナの外からsailコマンドでartisan –versionを実行してみる.
まるでコンテナの外からartisanコマンドを打っているような感覚. 良いと思う.

-Laravel
-

Copyright© ikuty.com , 2021 AllRights Reserved Powered by AFFINGER4.