Laravel 11をDocker環境(nginx,php,mysql)で構築し、主要な機能を動かすことを目的としたプロジェクトです。
使用している技術等はページ下部独習内容を参照ください。
このアプリは、質問投稿とそれに対する評価ができるWebアプリです。
極小規模ではありますが、様々な技術を幅広く使用しています。
- 投稿:同期処理、非同期版それぞれ作成
- 投票(評価):Vue + 非同期処理
- DB構成:質問(questions)- 投票(choices)の一対多
- その他:バッチ処理、テスト、画像アップロードも対応
作成したアプリの画像、遷移図、ER図等は ポートフォリオ を参照してください。
本アプリケーションは、以下の技術スタックおよびDockerを用いた仮想環境で構築されています。
確認をする場合は表示を押下してください。
構成を表示
項目 | バージョン例 | 説明 |
---|---|---|
Laravel | 11.x | PHPフレームワーク |
PHP | 8.3.2.1 | Laravel実行用 |
MySQL | 8.0.36 | データベース |
Nginx | 1.24 | Webサーバー |
Node.js | v22.17.0 | フロントエンドビルド |
Composer | 2.8.10 | PHPパッケージ管理 |
OS | Ubuntu 25.02 | 開発ベース環境 |
Docker | 28.1.1 | コンテナ実行環境 |
Docker Compose | 2.34 | コンテナオーケストレーション |
確認をする場合は表示を押下してください。
構成を表示
.
├── laravel_docker/
├── ├── docker/ # Docker関連の設定ファイル
├── │ ├── nginx/ # Nginxの設定ファイル
├── ├── php/ # PHPの設定ファイル
├── │ ├── Dockerfile # Dockerファイル
├── ├── laravel-project/ # Laravelアプリケーション本体
├── │ ├── app/ # アプリケーションのコアコード
├── │ ├── bootstrap/ # アプリケーションのブートストラップファイル
├── │ ├── config/ # 設定ファイル
├── │ ├── database/ # マイグレーションやシーディング
├── │ ├── public/ # 公開ディレクトリ(ドキュメントルート)
├── │ ├── resources/ # ビューやアセット
├── │ ├── routes/ # ルーティング定義
├── │ ├── storage/ # ログやキャッシュなどのストレージ
├── │ └── tests/ # テストコード
├── ├── docker-compose.yml # Docker Composeの設定ファイル
├── ├── init.sh # 初期セットアップスクリプト
├── ├── package.json # Node.jsの依存関係定義
├── ├── package-lock.json # Node.jsの依存関係のロックファイル
└── └── README.md # プロジェクトの説明ファイル
確認をする場合は表示を押下してください。
実行手順を表示
gitの利用が可能な状態を前提
mkdir work && cd work
git clone git@github.com:git-syuu2449/laravel_docker.git
設定の共通化をdockerとlaravel側でしている為、.envの配置を行う必要がある。
.envの配置については.envの設定項を参照
配置後、以下コマンドをコンソールにて実行する。
cd laravel_docker
`./init.sh`
boxの立ち上げを行う
UID=1000 GID=1000 docker compose --env-file .env up -d --build
docker compose exec app bash
以下はコンテナ内で実施する内容
cd /var/www/laravel-project
./setup.sh
setup.sh内でcomposerの実行、migrateを実行する。
npm run dev
viteの起動を行う
css,js等をpublicに配置していない為必要となる。
サイトURL:http://localhost:8000/
開発用サイトURL一覧:http://localhost:8000/dev/routes
phpMyAdmin:http://localhost:8080/
以下の.envをcloneしたディレクトリの直下に作成する。
cd laravel_docker
vi .env
.env例
# --- Laravel UID/GID ---
UID=1000
GID=1000
# --- MySQL ---
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=laravel_db
# --- phpMyAdmin ---
PMA_USER=root
PMA_PASSWORD=password
# --- PORT設定 ---
APP_PORT=8000
MYSQL_PORT=3306
PMA_PORT=8080
- MVC構造、Artisan、Routing、Migration、Seeder
- テスト(Unit / Feature)
- Blade、Vite、JS / Vue連携
- 認証(Breeze / Fortify / Jetstream / Sanctum)
- バッチ、ミドルウェア、ログ
- Spatieによる権限管理
- 管理画面構築(Filament など)
- Middleware
- エラーハンドリング関連
- サービスコンテナ関連
- Api関連
- アップロード関連
- ポリシー関連
- イベント、リスナー、キュー
- CI/CDと自動テスト
- セキュリティ対策
- Vue3の発展系
- and more...
詳細は以下のリンクを参照ください。
Part2: View / Routing / Migration / Seeder
Part4: Middleware / ログ / メンテナンス
個人的なメモ:
2025/7/22
axiosで使用しているform-dataの4.0でセキュリティの脆弱性が見つかった為overrideで対応。
将来的にaxios側のform-dataのバージョンが更新されたら削除すること。