概要

2020年末、Laravelの公式Docker環境であるLaravel Sailがリリースされました。

非公式のDocker環境としては以前からVesselLaradockが存在しますが、「この機会に、これらからLaravel Sailに乗り換えたい!」とお考えの方もいらっしゃるのではないでしょうか。

本記事ではVesselからLaravel Sailに移行する際の手順と留意点をメモします。
移行時のお役に立てれば幸いです。

事前準備

ComposerやPHPをローカルにインストールしていない場合は下記エイリアスを設定します。

# Composer
alias composer='docker run --rm -it -v $(pwd):/opt -w /opt shippingdocker/php-composer:latest composer'

# PHP
alias php='docker run --rm -it -v $(pwd):/opt -w /opt shippingdocker/php-composer:latest php'

Vessel 削除

Dockerコンテナが起動している場合は停止します。

./vessel stop

不要なディレクトリやファイルを削除します。dockerディレクトリやdocker-compose.ymlをカスタマイズしている場合はバックアップを取っておきます。

rm -rf docker
rm -rf docker-compose.yml
rm -rf vessel

config/app.phpに下記サービスプロバイダの指定がある場合は削除します。

1
2
3
4
5
'providers' => [
    // ...
    Vessel\VesselServiceProvider::class,
    // ...
];

Vesselをアンインストールします。

composer remove shipping-docker/vessel

Laravel Sail 導入

Laravel Sailをインストールします。

composer require laravel/sail --dev

docker-compose.ymlを生成します。

php artisan sail:install

Dockerコンテナを起動します。

./vendor/bin/sail up -d

下記エイリアスを設定することで、以降のsailコマンドの実行が楽になります。

alias sail='bash vendor/bin/sail'

留意点

MySQLのポート番号を指定する環境変数が変わります。

-      MYSQL_PORT=33060
+ FORWARD_DB_PORT=33060

Dockerfileをカスタマイズする場合は下記コマンドを実行します。

# Dockerfileを生成する
sail artisan sail:publish

# Dockerfileの変更を適用する
sail build --no-cache

コマンド比較

VesselとLaravel Sailのコマンド比較を以下に記載します。

起動

Vessel
./vessel start
Laravel Sail
sail up -d

停止

Vessel
./vessel stop
Laravel Sail
sail down

PHP

Vessel
./vessel php <cmd>
Laravel Sail
sail php <cmd>

Composer

Vessel
./vessel composer <cmd>
Laravel Sail
sail composer <cmd>

Artisan

Vessel
./vessel artisan <cmd>
Laravel Sail
sail artisan <cmd>

Tinker

Vessel
./vessel artisan tinker
Laravel Sail
sail tinker

Node

Vessel
./vessel node <cmd>
Laravel Sail
sail node <cmd>

NPM

Vessel
./vessel npm <cmd>
Laravel Sail
sail npm <cmd>

Yarn

Vessel
./vessel yarn <cmd>
Laravel Sail
sail yarn <cmd>

MySQL

Vessel
./vessel mysql
Laravel Sail
sail mysql

PHPUnit

Vessel
./vessel test
Laravel Sail
sail test

Bash

Vessel
./vessel exec app bash
Laravel Sail
sail shell

まとめ

以上がVesselからLaravel Sailに乗り換える際の基本的な手順です。

Laravel Sailに関する詳細な情報は公式ドキュメントをご参照いただければと思います。


投稿日

最終更新日

カテゴリ

Laravel

タグ