メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://kawax.biz/llms.txt

Use this file to discover all available pages before exploring further.

Sail とは

Laravel Sail は、Laravel の Docker 開発環境を操作するための軽量なコマンドラインインターフェースです。 PHP、MySQL、Redis を使った Laravel アプリケーションを、Docker の事前知識がなくても構築できます。 Sail の中心にあるのは、プロジェクトルートに置かれる compose.yaml ファイルと sail スクリプトです。 sail スクリプトは compose.yaml で定義された Docker コンテナを操作するための便利な CLI メソッドを提供します。 Laravel Sail は macOS、Linux、および Windows(WSL2 経由)で動作します。
Laravel 13 では Sail は標準の開発環境ではなくなりました。 スケルトンの composer.json から laravel/sail が削除され、代わりに composer setup コマンドが用意されています。 標準はローカルの PHP + SQLite で動かす構成です。
composer setup
composer dev
Docker コンテナが必要な場合は、引き続き Sail をインストールして使うことができます。
Sail はローカル開発専用のツールです。本番環境への利用は想定されていません。 本番環境では適切な Docker / クラウド構成を別途用意してください。

インストール

既存プロジェクトへのインストール

Composer でパッケージをインストールします。
1

Sail パッケージを追加する

composer require laravel/sail --dev
2

設定ファイルを発行する

sail:install Artisan コマンドを実行します。 このコマンドは compose.yaml をプロジェクトルートに発行し、.env に必要な環境変数を追記します。
php artisan sail:install
対話形式でサービスを選択できます。MySQL、Redis、Mailpit などを選択してください。
3

Sail を起動する

./vendor/bin/sail up
初回起動時は Docker イメージのダウンロードに時間がかかります。 起動後は http://localhost でアプリケーションにアクセスできます。
Docker Desktop for Linux を使用している場合は、docker context use default を実行して default コンテキストを使用してください。 コンテナ内でファイルパーミッションエラーが発生した場合は、SUPERVISOR_PHP_USER 環境変数を root に設定してください。

追加サービスの追加

既存の Sail インストールにサービスを追加するには sail:add コマンドを使います。
php artisan sail:add

Devcontainer の利用

Devcontainer 内で開発したい場合は --devcontainer オプションを使います。
php artisan sail:install --devcontainer

設定

シェルエイリアスの設定

デフォルトでは ./vendor/bin/sail と毎回入力する必要があります。 シェルエイリアスを設定すると sail とだけ入力すれば済むようになります。
alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'
~/.zshrc または ~/.bashrc に追記してシェルを再起動してください。
sail up
エイリアスを設定した後は、このドキュメントのすべてのコマンド例で ./vendor/bin/sail の代わりに sail と入力できます。

イメージの再ビルド

パッケージを最新の状態に保ちたい場合はイメージを再ビルドします。
docker compose down -v

sail build --no-cache

sail up

起動と停止

compose.yaml に定義されたすべての Docker コンテナを起動するには up コマンドを使います。
# フォアグラウンドで起動
sail up

# バックグラウンドで起動
sail up -d
停止するには stop コマンドを使うか、フォアグラウンドで起動中なら Ctrl + C を押します。
sail stop

起動フロー


コマンドの実行

Sail を使う場合、アプリケーションは Docker コンテナ内で動作します。 PHP コマンド、Artisan コマンド、Composer コマンド、Node / NPM コマンドはすべて sail 経由で実行します。
Laravel 公式ドキュメントでよく見かける php artisancomposernpm コマンドは、 Sail 環境では先頭に sail を付けて実行してください。

PHP コマンド

sail php --version

sail php script.php

Composer コマンド

sail composer require laravel/sanctum

Artisan コマンド

sail artisan migrate

sail artisan queue:work

Node / NPM コマンド

sail node --version

sail npm run dev

# Yarn を使う場合
sail yarn

コンテナ CLI (シェル)

コンテナ内で直接 Bash セッションを開くこともできます。
sail shell

# root ユーザーとして接続
sail root-shell
Tinker セッションを開くには次のコマンドを使います。
sail tinker

サービス

Sail が提供するサービスの概要です。インストール時に sail:install で選択できます。

MySQL

デフォルトで compose.yaml に含まれています。 データは Docker Volume で永続化されます。初回起動時にアプリ用と testing 用の 2 つのデータベースが自動作成されます。 .envDB_HOSTmysql に設定するとアプリからアクセスできます。
DB_HOST=mysql
DB_PORT=3306
ローカルマシンから接続するには TablePlus などの GUI ツールを使ってください。デフォルトポートは 3306 です。

Redis

.envREDIS_HOSTredis に設定するとアプリから Redis にアクセスできます。
REDIS_HOST=redis
REDIS_PORT=6379

Valkey

Redis の代替として Valkey を使う場合は REDIS_HOSTvalkey に設定します。

Mailpit

ローカル開発中のメール送信を捕捉して Web UI でプレビューできます。
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_ENCRYPTION=null
Sail 起動中は http://localhost:8025 で Mailpit の Web UI にアクセスできます。

Meilisearch / Typesense

Laravel Scout と統合して全文検索を試せます。
  • Meilisearch: MEILISEARCH_HOST=http://meilisearch:7700
  • Typesense: TYPESENSE_HOST=typesenseTYPESENSE_PORT=8108 など

RustFS (S3 互換ストレージ)

本番で Amazon S3 を使う予定がある場合、ローカルで S3 互換ストレージをエミュレートできます。
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=sail
AWS_SECRET_ACCESS_KEY=password
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=local
AWS_ENDPOINT=http://rustfs:9000
AWS_USE_PATH_STYLE_ENDPOINT=true

テストの実行

sail test

sail test --group orders
sail test は内部的に sail artisan test と同等です。デフォルトで専用の testing データベースが用意されるため、開発データに影響しません。

Laravel Dusk

Sail を使えば Selenium をローカルにインストールせずに Dusk のブラウザテストを実行できます。 compose.yaml の Selenium サービスのコメントを外してください。
selenium:
    image: 'selenium/standalone-chrome'
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    volumes:
        - '/dev/shm:/dev/shm'
    networks:
        - sail
Apple Silicon (M1/M2/M3) の場合は selenium/standalone-chromium イメージを使ってください。
その後 Dusk テストを実行します。
sail dusk

PHP / Node バージョン

PHP バージョンの変更

compose.yamllaravel.test コンテナの build.context を変更します。
# PHP 8.5 (デフォルト)
context: ./vendor/laravel/sail/runtimes/8.5

# PHP 8.4
context: ./vendor/laravel/sail/runtimes/8.4

# PHP 8.3
context: ./vendor/laravel/sail/runtimes/8.3
変更後はイメージを再ビルドしてください。
sail build --no-cache
sail up

Node バージョンの変更

build:
    args:
        WWWGROUP: '${WWWGROUP}'
        NODE_VERSION: '20'

サイトの公開共有

同僚のプレビューや Webhook テストのために、一時的にサイトを外部公開できます。
sail share
ランダムな laravel-sail.site URL が発行されます。URL 生成ヘルパーを正しく動作させるために、bootstrap/app.php で信頼するプロキシを設定してください。
->withMiddleware(function (Middleware $middleware): void {
    $middleware->trustProxies(at: '*');
})
サブドメインを指定することもできます。
sail share --subdomain=my-sail-site

Xdebug

有効化

まず sail:publish で設定ファイルを発行してから、.env に以下を追加します。
SAIL_XDEBUG_MODE=develop,debug,coverage
発行された php.ini ファイルに次の設定が含まれていることを確認します。
[xdebug]
xdebug.mode=${XDEBUG_MODE}
変更後はイメージを再ビルドします。
sail build --no-cache

CLI デバッグ

# Xdebug なしで実行
sail artisan migrate

# Xdebug ありで実行
sail debug migrate

ブラウザデバッグ

ブラウザからデバッグセッションを開始する手順は Xdebug 公式ドキュメント を参照してください。 PhpStorm を使っている場合は Zero-configuration debugging の設定が便利です。
Sail は artisan serve を使ってアプリを提供します。 XDEBUG_CONFIGXDEBUG_MODE を受け付けるのは Laravel 8.53.0 以降です。 それより古いバージョンではデバッグ接続が機能しません。

カスタマイズ

Sail の Dockerfile や設定ファイルをカスタマイズするには sail:publish コマンドで発行します。
sail artisan sail:publish
発行後は docker/ ディレクトリに Dockerfile が配置されます。 変更後はコンテナを再ビルドしてください。
sail build --no-cache

本番環境との違い

Sail はローカル開発専用の環境です。本番環境での使用は想定されていません。 本番環境への Docker デプロイには Laravel Cloud、Forge、Ploi などのサービスや、 独自の Docker Compose / Kubernetes 構成を検討してください。
Sail と本番環境の主な違いを以下にまとめます。
項目Sail (ローカル)本番環境
目的開発・デバッグサービス提供
Xdebug有効にできる無効推奨
Mailpitメールを捕捉してプレビュー実際のメールサーバー
データ永続化Docker Volumeマネージド DB など
パフォーマンス最適化なし最適化必須
Last modified on May 12, 2026