公式パッケージでdocker環境構築!
みなさん、こんにちは。どんぶラッコです。
みなさんはlaravelで新しい環境を立ち上げるときはどうしていますか?
dockerで構築する場合、自分で docker-compose
ファイルを作っている記事なんかもネットにありますよね。私もお仕事でこちらの記事を参考に作成したことがあります。
しかし実は、Laravel公式が docker-compose ファイルを作成できる機能を提供していることをご存知でしょうか?
それが Laravel Sail です。
Laravel8 から インストールガイドに登場していますね。知らなかった…
この Laravel Sail とは何者なのでしょうか?
公式から説明文を引用します
Laravel Sailは、LaravelのデフォルトのDocker構成と、操作するための軽量のコマンドラインインターフェイスです。 Sailは、Dockerの経験がなくても、PHP、MySQL、Redisを使用してLaravelアプリケーションを構築するために良い出発点を提供しています。
https://readouble.com/laravel/8.x/ja/installation.html
今までLaravelでローカル環境を立ち上げる場合、
- Laradockなどを使って自分で Docker環境を作成する
php artisan serve
コマンドと sqlite を駆使してローカル環境で試す- Cloud9 などの オンライン実行ツールを利用する
- MAMPなどの仮装サーバ上に環境構築する
といった選択肢があったと思いますが、環境構築の新たな選択肢になりそうですね!
ということで早速自分の環境で構築を試してみました。
- Mac OS BigSur
- Docker Desktop for mac インストール済
Laravel Sail のインストール
新規に Laravel プロジェクトを作る場合
これから新規にLaravelプロジェクトを作る場合は、既に Laravel Sailパッケージも含まれた状態で構築されるようです。
Laravelプロジェクトの始め方も 7系 とは変わっていますね。
curl -s "https://laravel.build/example-app" | bash
https://laravel.build/{プロジェクト名}
の形式でプロジェクト名を指定します。上記の例の場合、 example-app
というディレクトリが作成されます。
コマンドの意味は、curl
で入手したコマンド内容を 標準出力渡し ( |
) して bash
コマンドで実行しています。 -s
は silent
の略で、進捗状況やエラーなどを出力せず、純粋な結果だけを出力してくれるようにするオプションですね。
上の説明が「??」となっちゃってる人は、 Webブラウザで https://laravel.build/example-app にアクセスしてみるとわかりやすいと思うよ!
ということで、 https://laravel.build/example-app にアクセスしてみましょう。
すると、↓のようなコマンドが出てきたはずです。
つまり、この中のコードを実行しているだけなんですね。
特に重要なのは14行目。
bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium"
そう、結局ここで 従来の laravel new
コマンドを叩いています。
先程、このセクションの冒頭で インストール方法が 7.x
系と変わっていると書きましたが、なんのことはなく、ただ単に追加の処理をまとめて実行してくれているだけです。
さて、構築が完了したら sailのセットアップをします。作成したプロジェクトのフォルダに移動して、 ./vendor/bin/sail up
を実行します。
cd example-app && ./vendor/bin/sail up
すると、dockerコンテナの構築が開始します。最初はビルド処理が走るので数分時間がかかります。気長に待ちましょう。
既存のプロジェクトに導入する場合
既存のプロジェクトに導入する場合は、 laravel/sail
のパッケージをインストールして、artisanコマンドで叩くだけです。こちらも簡単!!
composer require laravel/sail --dev
php artisan sail:install
./vendor/bin/sail up
Sailコマンドのエイリアスを指定する
新規プロジェクトも既存プロジェクトも./vendor/bin/sail
というコマンドを入力しましたが、今後 sailコマンドを実行する際は ./vendor/bin/sail
を使っていくようですね。docker-compose
コマンドのような動き方をしてくれるようです。
このコマンドを毎回入力するのは面倒なので、エイリアスを貼っておくと便利だと書かれています。
エイリアスとは省略形みたいなもの、と考えておけばいいよ。ここでは sail
と入力したら ./vendor/bin/sail
と同じ意味になるように設定したいんだ。
macの場合は .zshrc
または .bashrc
を編集しましょう。
vim ~/.zshrc
開いたら最下段に以下を追加します。
alias sail='bash vendor/bin/sail'
最後に source
コマンドで設定を反映させておきます。
source ~/.zshrc
まとめ
まずはLaravel Sailを使えるようにするところまでまとめてみました。Dockerの知識がなくてもここまでサクッと作れてしまうとは….。凄すぎです。。
僕自身も「まずは触ってみた」というところなので、これから使用していって便利だと思った点を紹介していきたいと思います!