環境
- Laravel 6.0
- 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 の設定変更
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 を実行するショートカット。