仮想環境一覧

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

Laravel Sail

Laravel Sail というツールが 2020年12月9日 にローンチされました。
公式が出した Laravel アプリケーションの Docker 開発環境構築ツールです。
この記事では、Laravel Sailを使用して、Laravelの開発環境を構築するまでの手順を記述してます。

開発環境

今回の開発環境は以下となります。

  • macOS Big Sur 11.5.2
  • Docker Desktop for Mac(docker 20.10.8)

Laravel Sail を Mac で動かす為には Docker Desktop を予めインストールしておく必要があります。

Laravel Sailの導入

Laravel Sail は、LaravelをDocker開発環境で動作させるためのツールです。
Laravelを動作させるための一通りの仕組みが構築され、Dockerでの開発環境を構築する事ができます。

まずは sail のための Laravel をインストールする為にシェルを実行します。書式は以下になっています。

curl -s https://laravel.build/<YOUR_PROJECT_NAME> | bash

今回は、laravel-testという名前のプロジェクトを作成します。

# laravel-testという名前のプロジェクトを作成
curl -s https://laravel.build/laravel-test | bash

以下のコマンドを実行するだけでLaravelの開発環境を構築することが可能です。

cd laravel-test && ./vendor/bin/sail up

初回実行の場合は mysql, redis, mailhog, そして Laravel アプリケーション用(PHP や node などが入る)のイメージが作成されてから、それぞれコンテナが起動します。
ブラウザから http://プライベートIP or http://localhost にアクセスすると、Laravelの開発環境が構築されています。

ブラウザから http://プライベートIP or サーバーアドレス:8085にアクセスすると、メール確認用のMailHogも構築されています。

sailコマンド

Laravel Sailで起動させた場合に、コンテナの起動・停止や通常叩いている artisan コマンド等は以下の sailコマンドを使う事で実行できます。

./vendor/bin/sail <same_command...>

エイリアスの反映確認のため、以下のコマンドを Laravelのルートディレクトリ配下で実行します。

$ ./vendor/bin/sail -v
docker-compose version 1.29.2, build 5becea4c

MySQLへアクセス

mysqlにも「sail」コマンドを使用すればアクセスすることが可能です。

$ ./vendor/bin/sail exec mysql mysql -u root


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 237
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

その他のコマンド

artisanコマンド・PHPUnit・PHPコマンド・Composerコマンド・nodeのコマンドも叩くことが出来ます。

# artisanコマンドを実行したい場合
./vendor/bin/sail artisan <command>

# 例
./vendor/bin/sail artisan queue:work

# PHPコマンドを実行したい場合
./vendor/bin/sail php <command>

# 例
./vendor/bin/sail php --version

# composerを実行したい場合
./vendor/bin/sail composer <command>

# 例
./vendor/bin/sail composer install
./vendor/bin/sail composer update
./vendor/bin/sail composer require laravel/sanctum

# npm or node or yarnを使用したい場合
./vendor/bin/sail npm <command>
./vendor/bin/sail yarn <command>
./vendor/bin/sail node <command>

# 例
./vendor/bin/sail yarn install
./vendor/bin/sail npm install
./vendor/bin/sail node --version

# コンテナの中に入りたい場合
./vendor/bin/sail bash
./vendor/bin/sail shell

# コンテナの中のログを確認したい場合
./vendor/bin/sail logs -f

# 特定のサービスの再起動をしたい場合
./vendor/bin/sail restart <service_name>
# 例
./vendor/bin/sail restart mysql​

#PHPUnit を動作させる時も sail コマンドで実行。
./vendor/bin/sail test

sailコマンド一覧

起動
./vendor/bin/sail up
バックグラウンドで起動
./vendor/bin/sail up -d
停止
./vendor/bin/sail stop
ステータス
./vendor/bin/sail ps

エイリアスの設定

「./vendor/bin/sail」と毎回入力するのは面倒なので、エイリアスを設定します。

vi ~/.zshrc
 
<編集>
alias sail="./vendor/bin/sail"

反映させます。

source ~/.zshrc

今回はLaravel sailのインストールから開発環境の構築・コマンドについて紹介しました。