はじめに
Laravel Sailを使用せず、自前でDocker Compose環境を構築します。
※ なお、公式ではLaravel Sailの使用が勧められております。
本記事は暫定版であり、今後、Laravelの実装学習が進むにつれ更新していく予定です。
Laravel Sailについて
Laravelのプロジェクトを開始するにあたり、開発環境としてLaravel Sailを使用するか悩みました。
SailのPHPコンテナのDockerfileを確認してみると、artisan serve
経由でPHPのビルトインサーバーを使用しているようで、apacheやnginxなどのWebサーバーのコンテナは存在しませんでした。
このウェブサーバーは単一のシングルスレッドプロセスしか実行しないので、 リクエストがブロックされると、PHP アプリケーションはストールします。
デバッグ作業中に中断すると、リクエストを受け付けなくなってしまうということでしょうか。機会があれば検証してみたいと思います。
webサーバー構成にも対応してほしいというのが正直なところです。
Docker Compose 構成
Docker Composeの構成を記述します。
サービス一覧
- app
- app_cron
- app_queue
- web
- db_pgsql
- db_pgsql_admin
- db_mysql
- db_mysql_admin
- db_redis
- db_redis_admin
- db_memcached
- db_mongo
- db_mongo_admin
mail_mailhog- mail_mailpit
app
php-fpmで動作するアプリケーションサーバー。
LaravelにHTTPリクエストを処理させます。
app_cron
cron用のサーバー。
Laravelのタスクスケジュール機能を動作させます。
app_queue
キューを処理するためのサーバーです。
Laravelのキュー機能を動作させます。
web
nginxサーバー。
HTTPリクエストをappコンテナへとフォワード(中継)します。
db_pgsql
PostgreSQLサーバー。
db_pgsql_admin
PgAdminサーバー
db_mysql
MySQLサーバー。
db_mysql_admin
phpMyAdminサーバー。
db_redis
redisサーバー。
db_redis_admin
redisinsightサーバー。
db_memcached
memcachedサーバー。
db_mongo
MongoDBサーバー。
db_mongo_admin
Mongo Expressサーバー。
mail_mailhog
MailHogサーバー。(MailPitを使用するため削除予定)
mail_mailpit
MailPitサーバー。
Github