LaravelをOrbStackで動かすサンプルです。環境を立ち上げたあとトップページが表示されます
このプロジェクトは、Laravel 12とPHP 8.4を使用したWebアプリケーションの開発環境をOrbStackで構築するサンプルです。ApacheとFrankenPHPの両方に対応し、PostgreSQLとMySQLのデータベース環境も含まれています。
- PHP
- Laravel
- Webサーバー: ApachePHP / FrankenPHP
- データベース: PostgreSQL / MySQL
- コンテナ: Docker + OrbStack
- タスクランナー: Task
- 開発環境: Devbox
- OrbStackでLaravelを動かすとどうなるかを確認します
- ApacheとFrankenPHPの両方の環境でのパフォーマンス比較
- コンテナベースの開発環境の構築方法の学習
.dockerディレクトリにて自作のdocker環境の設定ファイルを格納しました。compose.yamlにて必要なコンテナ周りの設定を定義しました。- プロジェクト直下に
Taskfile.ymlを作成し、ラッパーコマンドを使うようにしました。
.docker/local/phpにて以下の対応を行いました。
- PHPのDockerfileを作成しました。
.env.appというファイルを作り、Laravelの設定を集約しました。コンテナ内に環境変数として渡す用にしています- その他 PHPの設定ファイルを格納もしています。
# プロジェクトをクローン
git clone <repository-url>
cd laravelorbstack
# Devboxを使用する場合(推奨)
devbox shell
# 初回環境構築
task initセットアップ完了後、以下のURLにアクセスしてLaravelのデフォルトページが表示されることを確認してください:
- Apache版: https://php-app.laravelorbstack.orb.local/
- FrankenPHP版: https://php-franken.laravelorbstack.orb.local/
| コマンド | 用途 |
|---|---|
task init |
初回セットアップ(全てクリーンアップしてから構築) |
task start |
通常の起動(ボリュームは保持) |
task up |
コンテナを立ち上げる |
task down |
コンテナを停止する |
task ps |
コンテナの状態確認 |
task logs |
ログを表示 |
| コマンド | 用途 |
|---|---|
task buildLocalPhps |
両方のPHPイメージをビルド |
task buildLocalApacheModPhp |
Apache版PHPイメージをビルド |
task buildLocalFrankenPhp |
FrankenPHP版イメージをビルド |
task images |
Dockerイメージ一覧表示 |
| コマンド | 用途 |
|---|---|
task exec:apache |
Apache PHPコンテナに入る |
task exec:franken |
FrankenPHPコンテナに入る |
| コマンド | 用途 |
|---|---|
task composer |
Composerコマンド実行 |
task artisan |
Artisanコマンド実行 |
task php |
PHPコマンド実行 |
task lintCode |
コード品質チェック(PHPStan + ECS + Rector) |
task phpunit |
PHPUnitテスト実行 |
task ide-helper |
IDE Helper生成 |
.
├── .docker/ # Docker設定ファイル
│ ├── compose.yaml # Docker Compose設定
│ ├── php.apache.Dockerfile # Apache版PHP Dockerfile
│ ├── php.franken.Dockerfile # FrankenPHP版 Dockerfile
│ ├── common/ # 共通設定
│ ├── local/ # ローカル開発用設定
│ ├── prod/ # 本番用設定
│ └── flyio/ # Fly.io デプロイ用設定
├── libConfig/ # 開発ツール設定
│ ├── ecs.php # Easy Coding Standard設定
│ ├── phpstan.neon # PHPStan設定
│ ├── rector.php # Rector設定
│ ├── phpunit.xml # PHPUnit設定
│ └── deptrac.yaml # Deptrac設定
├── packages/ # カスタムパッケージ
├── Taskfile.yml # Taskコマンド定義
└── devbox.json # Devbox設定
このプロジェクトには以下の開発ツールが組み込まれています:
- PHPStan: 静的解析ツール(レベル9設定)
- Easy Coding Standard (ECS): コーディング規約チェック
- Rector: PHPコードの自動リファクタリング
- Deptrac: アーキテクチャ依存関係の管理
- PHPUnit: ユニットテスト・統合テスト
- Laravel IDE Helper: IDE補完サポート
# コード品質チェック(全て実行)
task lintCode
# 個別実行
task stan # PHPStan実行
task ecs # ECS実行
task rector # Rector実行(ドライラン)
task phpunit # テスト実行# Apache版をデプロイ
task deployApache
# FrankenPHP版をデプロイ
task deployFranken
# デプロイ後のSSH接続
task sshFlyIo-
コンテナが起動しない場合
task cleanUpComposeProject # 全てクリーンアップ task init # 再構築
-
Composerの依存関係エラー
task composerRefresh # Composer完全リフレッシュ -
データベース接続エラー
task ps # コンテナ状態確認 task logs # ログ確認
ApacheとFrankenPHPの両方の環境が利用可能なため、パフォーマンス比較が可能です:
- Apache: 従来のmod_php環境
- FrankenPHP: Go製の高速PHPサーバー
- OrbStack統合: https://orb.local でローカル環境一覧表示
- HTTPS対応: 自動SSL証明書生成
- マルチデータベース: PostgreSQL・MySQL両対応
- 開発ツール統合: 保存時の自動コード整形・解析
このプロジェクトは環境構築のサンプルのため、以下は対応していません:
.env.appの不要な項目削除- configファイルの不要な項目削除
- composer.jsonの設定最適化
- 本番環境向けのセキュリティ設定
- パフォーマンスチューニング