sail:add — Sailにコンテナを追加するコマンド

artisan

Laravel Sail にサービスを追加する方法

Laravel Sail は Docker‑Compose をラップした軽量 CLI です。
サービスを追加する手順は 2 つのステップに分かれます。

  1. php artisan sail:add <service> で Sail にサービスを登録
  2. sail up(または sail up <service>)でコンテナを起動

1. Sail の構成概要

ファイル 内容 役割
docker-compose.yml すべてのサービス・ネットワーク・ボリュームを定義 実際のコンテナ構成
vendor/bin/sail シェルスクリプト docker compose を Sail 用にラップ
sail CLI sail up / sail down など 便利なコマンド群を提供

php artisan sail:add を実行すると、Sail が自動的に docker-compose.yml に該当サービスを挿入し、必要に応じてクライアントバイナリを更新します。


2. Artisan でサービスを追加

# Redis を追加
php artisan sail:add redis

# Mailpit を追加
php artisan sail:add mailpit

# サポートされているサービス例
#   mysql, postgres, redis, memcached, mailpit, minio, phpmyadmin, …

実行後、docker-compose.yml にサービス定義が挿入され、Sail のスクリプトが新しいサービス名をコマンドとして認識します。


3. サービスの起動

# 追加したサービスだけ起動
sail up -d redis

# すべてのサービスを起動
sail up

# ステータス確認
sail ps

ヒント:開発中は必要なサービスだけ起動するとビルド時間が短縮できます。
sail up -d mysql redis のように指定してください。


4. 手動編集でカスタムサービスを追加

既定のサービス以外(例:特定バージョンの PostgreSQL、外部 API コンテナなど)を追加したい場合は、docker-compose.yml を直接編集します。

services:
  custom_api:
    image: my-org/api:latest
    ports:
      - "8080:80"
    networks:
      - sail

編集後は Sail を再起動します。

sail down
sail up

5. よく使われる Sail サービス一覧

サービス Docker イメージ ポート Sail コマンド
MySQL mysql:8.0 3306 sail:mysql
PostgreSQL postgres:15 5432 sail:postgres
Redis redis:7 6379 sail:redis
Memcached memcached:1.6 11211 sail:memcached
Mailpit axllent/mailpit:latest 8025 sail:mailpit
Minio minio/minio:latest 9000 sail:minio

6. よくある落とし穴と対策

落とし穴 原因 対策
Docker Compose のバージョン不一致 Sail は Compose v2 が必要 Docker Desktop を最新版にするか、docker compose v2 をインストール
ポート競合 既存サービスと同じホストポートを使用 docker-compose.yml でポートを変更、またはネットワーク内のみ通信
サービスが起動しない 設定ミス・依存関係不足 sail logs <service> でログ確認、環境変数・ボリュームを調整
Sail コマンドが見つからない Sail がインストールされていない composer require laravel/sail --devphp artisan sail:install

7. 具体例:Redis を追加して起動

# 1. 追加
php artisan sail:add redis

# 2. docker-compose.yml を確認
grep -A5 redis docker-compose.yml

# 3. Redis だけ起動
sail up -d redis

# 4. 状態確認
sail ps | grep redis

8. 参考リンク


結論
php artisan sail:add <service> が Sail にサービスを追加する標準手段です。
カスタムサービスが必要な場合は docker-compose.yml を手動で編集し、Sail を再起動します。
ポート競合や Compose バージョンの違いに注意しながら進めれば、スムーズに環境を拡張できます。

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする