LoginSignup
100
114

More than 3 years have passed since last update.

Laravel で Docker 使って開発したいなら Vessel にしておこう

Last updated at Posted at 2020-08-12

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#L1node:latest を使っててこのままだとイメージサイズが大きいので変更したほうがよいです。

インストール

Composerを使ってインストールできます。

composer require shipping-docker/vessel

これはかなり嬉しいですね。 git submodule add とかできれば書きたくない。

次に設定ファイルを publish します。

php artisan vendor:publish --provider="Vessel\VesselServiceProvider"

すると docker ディレクトリに Docker の各種ファイル、プロジェクトルートに docker-compose.ymlvessel というシェルスクリプトがコピーされます。

で最後に

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 が得意なわけじゃないのでこういったパッケージがあるのは嬉しいですね。

100
114
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
114