6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-10-26

環境

概要

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 を実行するショートカット。

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?