Laravel: Vessel によるローカル開発用コンテナ環境を使う

環境

概要

Laravel のローカル開発環境を Docker Compose で動作させるための設定とショートカットコマンドを提供してくれる。

導入

インストール

$ composer require --dev shipping-docker/vessel

設定の取り込み

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

これにより以下が生成される。

  • docker/ 配下 ... イメージ作成のための設定
  • app/
  • mysql/
  • node/
  • docker-compose.yml
  • vessel ... コマンド

docker/ 配下はファイルがいろいろあるが、これをベースに直接カスタマイズしていくのでコミットしてしまって良いと思う。

初期化

$ bash vessel init

このコマンドでおこなわれること。

  • composer require predis/predis
  • キャッシュとセッションに Redis を使うためにインストール

  • .env の設定変更

file DB_HOST=mysql CACHE_DRIVER=redis SESSION_DRIVER=redis REDIS_HOST=redis

  • データベースのホストを mysql コンテナに向ける設定
  • キャッシュとセッションの保存先を Redis に向ける設定
  • ※.env.example は変更されないので、必要があれば転記してコミットする

  • vessel コマンドへの実行権限追加

例)

起動

$ ./vessel start

docker-compose up -d と同じ。デフォルトで以下のコンテナが起動する。

  • app : Ubuntu 18.04 ベース。supervisord (nginx + php-fpm)
  • mysql:5.7
  • redis:alpine

データベース名、ユーザー等は .env から取得して初回起動時に作成される。DB_USERNAME に root を指定するとユーザーを作成しようとしてエラーになるので別のものにする。

他に必要なものがあれば docker-compose.yml を編集する。

停止

$ ./vessel stop

docker-compose down と同じ。

コンテナイメージの再ビルド

Dockerfile は docker/ フォルダ配下にあるので、必要に応じて編集し、再ビルドする。

$ ./vessel build

docker-compose up -d と同じ。

ログイン

$ ./vessel exec app bash

docker-compose exec app bash と同じ。

composer コマンド実行

$ ./vessel composer (コマンド)

app コンテナで composer を実行するショートカット。

artisan コマンド実行

$ ./vessel artisan (コマンド)

app コンテナで php artisan を実行するショートカット。