PHP Framework Laravel用 Docker開発環境構築パッケージ for Mac
- Docker Desktop for Mac
- composer (インストールしていない場合は、セットアップ時に導入されます。)
- macOS Catalina
- Docker Desktop for Mac: 2.4.0.0
- Engine: 19.03.13
- Compose: 1.27.4
- CentOS 8
- Apache 2.4
- PHP 7.4
- Laravel 最新版
- Dusk
- PHP_CodeSniffer
- PHPStan with Larastan
- Chrome(latest. for Dusk)
- MySQL 8.0
- MailHog
laravel-docker/
├── README.md
├── .circleci
│ ├── config.yml
├── docker
│ ├── app
│ │ ├── Dockerfile ... appサーバのDockerfile
│ │ └── init
│ │ ├── circleci
│ │ │ ├── add_setting.sh ... コネクション設定を追加するScropts
│ │ │ └── setting.txt ... コネクション設定収録
│ │ ├── composer
│ │ │ ├── add_scripts.sh ... composer.jsonへscriptsを追加する
│ │ │ └── add_scripts.txt ... composer.jsonへ追加するScripts
│ │ ├── env
│ │ │ ├── .env ... Laravel envファイル
│ │ │ ├── .env.testing ... Laravel テスト用envファイル
│ │ │ ├── .env.dusk.local ... Laravel Dusk用envファイル
│ │ │ └── add_key.sh ... 生成されたキーをテスト用およびDusk用のenvファイルへ付与する
│ │ ├── app_setting.sh ... appサーバの初期動作を制御します。
│ │ ├── DuskTestCase.php ... Duskテスト用の基底クラス
│ │ ├── google-chrome.repo ... Rgoogle-chrome-stableインストールの為のリポジトリファイル
│ │ ├── phpcs.xml ... PHP_CodeSniffer ルール定義(PSR-12)
│ │ ├── phpstan.neon ... Larastan 設定ファイル(PHPStan)
│ │ └── phpunit.xml ... PHPUnit 設定ファイル
│ ├── db
│ │ ├── Dockerfile ... dbサーバのDockerfile
│ │ ├── conf.d
│ │ │ └── my.cnf ... MySQLの設定ファイル
│ │ └── init
│ │ └── create_test_db.sh ... テスト用DBを作成する為のシェルスクリプト
│ └── docker-compose.yml ... appとdbのコンテナはdocker-composeによって制御されます。
├── order.sh ... LaravelとDockerを操作するシェルスクリプトです。
└── src ... Laravelプロジェクトと初期設定ファイルはこのディレクトリへ設置されます。
// GithubからソースをCloneします。
git clone https://github.com/rito328/laravel-docker.git
// laravel-dockerディレクトリへ移動します。
cd /path/to/laravel-docker
// セットアップを開始すると、Laravelがインストールされ、Docker環境が起動します。
sh order.sh setup
!! POINT !!
Laravelセットアップ時にマイグレーションとシーディングが実行されるので、予めこれらを定義しておく事で、初期データを投入可能です。
セットアップが完了したら、localhostにアクセスします。
http://localhost/
送信したメールは MailHog で確認できます。
http://localhost:8025
一度セットアップを行えば、あとはstart/stopで動作を制御できます。
// stop
sh order.sh stop
// start
sh order.sh start
Laravelプロジェクトは src/
配下にインストールされます。
laravel-docker/
└── src
└── laravel
Laravelプロジェクトは外部ボリュームからマウントされるため、永続化されます。
sh order.sh setup : Laravelインストール・Docker環境構築を行います。
sh order.sh start : setup のエイリアスです。
sh order.sh stop : コンテナを停止します。
sh order.sh restart : コンテナを再起動します。
sh order.sh destroy : コンテナ・イメージを削除します。
sh order.sh prune : 使用中ではないすべてのコンテナ・ボリューム・ネットワークを削除します。
sh order.sh conn app : appコンテナ(Webサーバ)へ接続します。
sh order.sh conn db : dbコンテナ(DBサーバ)へ接続します。
sh order.sh conn mysql : dbコンテナ内のMySQLへ接続します。
sh order.sh help : ヘルプを表示します。
!! 重要 !!
sh order.sh prune
は laravel-docker の範囲以上の docker 環境全体に影響を及ぼします。使用しなくなったコンテナ・ボリューム・ネットワークを全て削除したい時のみに使用してください。
インストールされたLaravelでは、次のカスタムComposerコマンドを使用する事ができます。
composer lint : PHP_CodeSniffer (phpcs)による構文チェックを実行する
composer lint-report-xml : 構文チェックの結果をXMLファイルへ出力する
composer lint-report-csv : 構文チェックの結果をCSVファイルへ出力する
composer lint-rewrite : 構文チェックでエラーとなったものを自動修正する(phpcbf)
composer analyse : PHPStan による静的コード解析を実行する
このパッケージは、LaravelをDocker環境下で気軽に試せるように作りました。
一部設定ファイルもコミットしているので、これらのソースファイル一式を本番環境にそのままデプロイする事は勧められません。
Have fun Laravel & Docker life!