Laravel Sail コマンド一覧
Laravel Sail を導入すると使用できる sail
コマンドで提供されている便利なメソッドをまとめました。
sail
コマンドの実態は vendor/laravel/sail/bin/sail
スクリプトであり、基本的には docker-compose
コマンドのエイリアスです。
実際に実行されるコマンドも掲載しています。
※ 動作確認環境
php : 8.0.7
laravel : 8.56.0
sail : 1.10.1
使用される変数について
sail
スクリプトの中では .env
が読み込まれ、一部の値が使用されます。
特に $APP_SERVICE
という値は、laravel
アプリケーションを実行しているコンテナ名を指定している重要な値です。
デフォルトは laravel.test
ですが、 docker-compose.yml
でコンテナ名を変更している場合は必ず .env
で設定を変更しておきましょう。
これを行わなかった場合、ほとんどの sail
コマンドが機能しなくなります(実行してもエラーも何も返さなくなります)。
# docker-compose.yml でコンテナ名を 「app」 にした場合
APP_SERVICE="app"
DBの操作コマンドはコンテナ名がハードコーディングされているため、docker-compose.yml
のコンテナ名を変更しないようにしましょう。
サーバサイド系
sail php
コンテナ内の php を実行します。
$ docker-compose exec -u sail "$APP_SERVICE" php "$@"
sail composer
コンテナ内の composer を実行します。
$ docker-compose exec -u sail "$APP_SERVICE" composer "$@"
sail shell / root-shell
コンテナ内で bash を起動します。
root-shell は root ユーザとして bash を起動します。
$ docker-compose exec -u sail "$APP_SERVICE" bash "$@"
$ docker-compose exec "$APP_SERVICE" bash "$@"
sail bin
コンテナ内の bin ファイルを実行します。
$ docker-compose exec -u sail "$APP_SERVICE" ./vendor/bin/"$@"
artisan 系
sail artisan
artisan コマンドを実行するためのエイリアスです。
$ docker-compose exec -u sail "$APP_SERVICE" php artisan "$@"
sail tinker
tinker コマンドを実行するためのエイリアスです。
$ docker-compose exec -u sail "$APP_SERVICE" php artisan tinker
sail test
phpunit を実行するためのエイリアスです。
artisan test
コマンドの詳細は以下で確認できます。
$ docker-compose exec -u sail "$APP_SERVICE" php artisan test "$@"
sail dusk / dusk:fails
dusk コマンドを実行するためのエイリアスです。
dusk:fails は失敗したテストを再実行することができます。
$ docker-compose exec -u sail \
-e "APP_URL=http://${APP_SERVICE}" \
-e "DUSK_DRIVER_URL=http://selenium:4444/wd/hub" \
"$APP_SERVICE" php artisan dusk[または dusk:fails] "$@"
sail debug
環境変数を XDEBUG_SESSION=1
にした状態で artisan コマンドを実行します。
$ docker-compose exec -u sail \
-e XDEBUG_SESSION=1 \
"$APP_SERVICE" php artisan "$@"
データベース系
sail mysql / mariadb
mysql / mariadb コンソールを実行するためのエイリアスです。
実行するコンテナ名が違うだけみたいです。
$ docker-compose exec mysql[または mariadb] \
bash -c 'MYSQL_PWD=${MYSQL_PASSWORD} mysql -u ${MYSQL_USER}${MYSQL_DATABASE}'
sail psql
postgresql コンソールを実行するためのエイリアスです。
$ docker-compose exec pgsql \
bash -c 'PGPASSWORD=${PGPASSWORD} psql -U ${POSTGRES_USER} ${POSTGRES_DB}'
sail redis
Redis cli を実行するためのエイリアスです。
$ docker-compose exec redis redis-cli
フロントエンド系
sail node / npm / npx / yarn
コンテナ内で node / npm / npx / yarn を実行するためのエイリアスです。
$ docker-compose exec -u sail "$APP_SERVICE" node "$@"
$ docker-compose exec -u sail "$APP_SERVICE" npm "$@"
$ docker-compose exec -u sail "$APP_SERVICE" npx "$@"
$ docker-compose exec -u sail "$APP_SERVICE" yarn "$@"
その他
sail share
サイトを公開して共有することができます。
詳細はドキュメントを参照してください。
$ docker run --init --rm -p $SAIL_SHARE_DASHBOARD:4040 \
-t beyondcodegmbh/expose-server:latest \
share http://host.docker.internal:"$APP_PORT" \
--server-host="$SAIL_SHARE_SERVER_HOST" \
--server-port="$SAIL_SHARE_SERVER_PORT" \
--auth="$SAIL_SHARE_TOKEN" \
--subdomain="" \
$@"
Discussion