Laravel + Docker | Laravel Sailを使って開発環境を楽に構築する

はじめに

今回は、Laravelベストプラクティス - Github を改めて読み直し気になったものから、
1つ試してみたのでご紹介したいと思います。

「Laravel Sail」というLaravel + Dockerの開発環境を簡単に作成・操作できる
コマンドライン・インターフェースについてです。

(2021/07/30現在、Laravel 8で試しています)

背景

弊社ではDockerを使って開発環境を作成し利用しています。
どちらを使うかはプロジェクトにより適切な方を選択していますが、
新たにアサインされたメンバーには開発環境を整備してもらうことになります。

そうすると生まれるのが以下の問題ですが、

  • 開発環境作成のベース整備にかける時間がない…
  • 新メンバーにDockerの知識がないが、学習コストも割きたくない…

これらを解決してくれるのが、「Laravel Sail」になります。

Laravel Sailを導入する

Laravel Sail(以下、Sail)の肝は、docker-compose.yml ファイルと sail コマンドです。

まずは公式サイトの Installation&Setup に従い docker-compose.yml を作成し、
sailコマンドのエイリアスも作成しておきましょう。

上記が完了すれば、あとはプロジェクトルートで

> sail up -d

というコマンドを実行するだけで開発環境が立ち上がるようになります。
("docker-compose up -d" と同じです)

実際に立ち上がるコンテナは以下になります。もちろん、必要なもののみ選択することが可能です。

  • Webサーバー(laravel.testコンテナ)
  • データベース(デフォルトはMySQL,PostgreSQLやMariaDBも選択可能)
  • Redis
  • Mailhog
  • MeiliSearch
  • Selenium
  • MinIO

sail コマンドを使う

ここまで読んだあなたは、
なんだ、自分でdocker-compose.ymlを書けばいいじゃん…
と思ったことでしょう(実際私も思いました)。

Laravel Sailのもう1つの肝は、"sail"コマンドです。

docker execでコンテナに入らなくても、ローカルから様々なコマンドが実行出来るため、
現在のシェルがどの環境なのか」を気にしなくて良くなります。

つまり、環境構築の際にDockerに関する学習コストを排除することが出来ます。

実際に使ってみて便利だなと思ったコマンドを以下に挙げてみます。

# artisanコマンド
> sail artisan migrate
> sail artisan db:seed

# MySQL(これが本当に便利)
> sail mysql

# Tinker(これもよく使います)
> sail tinker

# ユニットテスト
> sail test

# php
> sail php --version
> sail php xxxx.php

# composer
> sail composer install
> sail composer require barryvdh/laravel-debugbar --dev

# npm
> sail npm install
> sail npm run dev

上記で挙げた以外にも、色々なコマンドがあります。
また、もちろん中身はDockerなのでプロジェクトでの要求に合わせて中身をカスタマイズすることができます。

終わりに

今回はLaravel Sailを使ってみましたが、Laravel標準のものはまだ使ったことがないものも多く、
Laravel way に全然乗れていない気がしています…。

次回もベストプラクティスの中から、
クエリビルダや生のSQLクエリよりもEloquentを優先して使い配列よりもコレクションを優先する
という項について実際にコードを書いてみてご紹介しようと思っているのでよろしければご覧ください。

また、最近弊社では採用サイトを公開いたしましたのでそちらも是非ご覧ください!

読んでいただきありがとうございました。

前へ

LaravelのクエリビルダとEloquentの違いとは?

次へ

iavaで抽象クラスを使用するメリット