0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel × Docker】Laravel Sailを使う

Last updated at Posted at 2025-01-25

Laravel Sailとは?

Docker環境で構築されたLaravelアプリケーションを操作するための軽量なCLIです。
Dockerの経験・知識がない開発者でも、Sailコマンドを使えばDocker × Laravelの開発をスムーズに進めることができます。

Sailを使うメリット

Sailを使う具体的なメリットを紹介します。

環境構築がかんたんにできる

通常であれば PHP、MySQL、Redis、Node.jsなどを手動でインストール・設定する必要がありますが…
Sailの場合、./vendor/bin/sail upコマンドだけで、必要なコンテナ(Webサーバー、データベース、キャッシュなど)が自動的に立ち上がります。

コマンドがシンプルに書ける

例えばDockerで複数のコンテナ(アプリケーションコンテナ、DBコンテナなど)を起動している場合、アプリケーションコンテナでphpコマンドを実行したい場合は、コンテナを明示的に指定する必要があります。
こんな感じ↓

# docker-compose exec app で、アプリケーションコンテナを指定する必要がある
docker-compose exec app php artisan migrate

こうやって毎回docker-compose exec appを頭につけるのは面倒くさいですよね。
ですが、sailをインストールするともっとシンプルなコマンドで済みます。

sail artisan migrate

Sailは自動的に対象のコンテナを認識し、Laravelの環境に合わせたコマンド実行を行ってくれます。

Laravel Sailのインストール

インストール

composer require laravel/sail --dev

Sailを使うために必要なdocker-compose.yml.envの設定を行う

php artisan sail:install

基本的にはこれだけでSailコマンドが使えるようになります。
例えば、コンテナを起動したければ以下のコマンドで起動できるはずです。

./vendor/bin/sail up

エイリアスを設定する

ここまでだと、Sailコマンドを使うためには毎回 ./vendor/bin/sailと入力する必要があります。
これが面倒だと感じる場合は、エイリアスを設定することをお勧めします。

ターミナルの設定ファイルに以下を追記

# Bashを使っている場合
echo "alias sail='bash ./vendor/bin/sail'" >> ~/.bashrc
# Zshを使っている場合
echo "alias sail='bash ./vendor/bin/sail'" >> ~/.zshrc

設定を反映させる

# Bashの場合
source ~/.bashrc
# Zshの場合
source ~/.zshrc   

ターミナルの設定ファイルに変更を加えると、シェルがその変更を認識するためには、改めて設定ファイルを読み込ませる必要があります。
source ~/.bashrcを実行することで、現在のシェルセッションに変更内容を即座に反映させることができます。

まとめ

Laravel Sailを使えば、アプリケーションコンテナなどを指定せずとも、以下のようなシンプルなコマンドで操作が可能になります!
ぜひ試してみてください。

# コンテナを起動する
sail up -d
# コンテナを停止する
sail down
# マイグレーションファイルを実行する
sail artisan migrate
0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?