Vessel そこそこ使ってる人はいるんだろうけど、 Laradock 使ってツラいことになってる人がそこそこいそうなので Vessel 使うと楽だよということをに書いておきます。
Vessel とは
Vessel は簡単に下記環境を Docker で作成することができます。
- PHP7.4
- MySQL 5.7
- Redis
- NodeJS, NPM, Yarn, Gulp
ちょっと自分の環境にあわない(例えばデータベースに PostgreSQL を使っている等)場合は書き換えることができます(各種ファイルがコピーされるだけなので)。おおむね、PHP, データベース, キャッシュストレージ, NodeJS があれば 8〜9 割くらいの現場ではフィットするんじゃないでしょうか。
使用にあたっての注意点(追記)
Vessel は https://github.com/shipping-docker/vessel/blob/master/docker-files/docker/node/Dockerfile#L1 で node:latest
を使っててこのままだとイメージサイズが大きいので変更したほうがよいです。
インストール
Composerを使ってインストールできます。
composer require shipping-docker/vessel
これはかなり嬉しいですね。 git submodule add
とかできれば書きたくない。
次に設定ファイルを publish します。
php artisan vendor:publish --provider="Vessel\VesselServiceProvider"
すると docker
ディレクトリに Docker の各種ファイル、プロジェクトルートに docker-compose.yml
と vessel
というシェルスクリプトがコピーされます。
で最後に
bash vessel init
とすれば準備完了。簡単ですね。
使い方
コンテナを起動するには
./vessel start
とすればコンテナが起動します。停止するには
./vessel stop
で停止します。
この vessel
というシェルスクリプトが上手くできていて、Docker のコマンド(自分はすぐ忘れる)を補ってくれます。例えばコンテナ内で php artisan xxx
したい時は
./vessel artisan xxx (tinker とか make:controller とか)
でOKです。上記コマンドは
docker-compose exec -u ユーザー名 コンテナ名 php artisan コマンド
と同じですが、かなり短くなって覚えやすくなってるのがわかると思います。他にも
./vessel test
で PHPUnit でテストができたり
./vessel node or npm or yarn
で各種コマンドが実行できたり
./vessel dump
で mysqldump
が実行できたり
./vessel mysql
で MySQL コマンドが実行できたり
./vessel ssh コンテナ名
でコンテナに入ったりできます。
あとは…そうですね。私はホストOSがUbuntuなので dockerでvolumeをマウントしたときのファイルのowner問題 が発生して困ることが多いのですがこの辺にも対処してくれています。
まとめ
Docker を開発環境と割り切って使うのであれば Vessel は非常におすすめです。そうでなくても vessel
ファイルをちょっとカスタマイズして活用するのもいいのではと思います。私は理由があって Vessel が使えない現場でも vessel
ファイルっぽいものを作って導入しています。
プロジェクトメンバー全員が Docker に習熟していれば必要ないかもしれませんが、私も Docker が得意なわけじゃないのでこういったパッケージがあるのは嬉しいですね。