Skip to content

git-syuu2449/laravel_docker

Repository files navigation

laravel_docker

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 clone

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の設定

以下の.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...

詳細は以下のリンクを参照ください。

Part0: Docker

Part1: Laravel・Artisan・MVC

Part2: View / Routing / Migration / Seeder

Part3: 認証機能 / 権限 / テスト / バッチ

Part4: Middleware / ログ / メンテナンス

Part5: Vue / JS / Vite連携

Part6: API

Part7: 例外処理、プロバイダ

Part8: アップロード関連

Part9: ポリシー関連

Part10: テスト

Part11: Export/Import

PartX: その他

開発環境等

ロードマップ

個人的なメモ:
2025/7/22
axiosで使用しているform-dataの4.0でセキュリティの脆弱性が見つかった為overrideで対応。
将来的にaxios側のform-dataのバージョンが更新されたら削除すること。

About

Launch Laravel with Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published