概要¶
2020年末、Laravelの公式Docker環境であるLaravel Sailがリリースされました。
非公式のDocker環境としては以前からVesselやLaradockが存在しますが、「この機会に、これらから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 |
|
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に関する詳細な情報は公式ドキュメントをご参照いただければと思います。