Laravel + Docker 開發環境
本專案提供一個以 Docker 為基礎的 Laravel 開發環境,整合以下功能:
- Laravel App with PHP 8.3
- Nginx 作為 Web Server
- MariaDB 作為資料庫
- Supervisor 管理 Laravel 的 queue 與 scheduler
- Git Worker 自動同步程式碼 (透過 git pull)
- 多容器架構支援
.env
配置
📁 專案結構
.
├── docker/ # 各服務用到的設定檔
│ ├── nginx/ # Nginx templates
│ ├── mariadb/ # MariaDB my.cnf
│ ├── php/ # PHP 設定
│ ├── entrypoint.git.sh # Git worker 初始化腳本
│ ├── supervisord.conf # Laravel App 用 Supervisor 設定
│ └── supervisord.git.conf # Git Worker 用 Supervisor 設定
├── data/ # 資料儲存與服務掛載目錄
│ ├── html/ # Laravel 專案程式碼 (git clone 下來)
│ ├── logs/ # Log 檔目錄
│ ├── mariadb/ # DB 資料儲存
│ └── nginx/ # Nginx 設定
├── Dockerfile # Laravel App Dockerfile
├── Dockerfile.git # Git Worker Dockerfile
├── docker-compose.yml
└── README.md
🚀 快速開始
1️⃣ 建立 .env
檔案
cp .env.example .env
填寫必要參數:
APP_NAME=ktvcentral
APP_URL=http://localhost
APP_DOMAIN=localhost
APP_PORT=80
REPO_URL=https://github.com/your/laravel-repo.git
REPO_BRANCH=main
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secret
2️⃣ 使用容器方法
./start.sh --wipe
./stop.sh --wipe
./restart.sh
完成後會啟動:
- Laravel app
- Git worker (定期同步程式碼)
- Queue worker / Scheduler(由 Supervisor 管理)
- MariaDB
- Nginx
🛠️ 服務說明
容器名稱 | 說明 |
---|---|
ktvcentral_app |
Laravel App (PHP 8.3 + Supervisor) |
ktvcentral_db |
MariaDB 10.6 |
ktvcentral_nginx |
靜態資源與反向代理(連接 Laravel App) |
📚 Laravel 常見操作
# 進入 app 容器
docker compose exec app bash
# Laravel 操作範例
php artisan migrate --seed
php artisan queue:restart
npm install && npm run build
🧼 目錄權限與 Log
請確保以下目錄存在且權限正確:
mkdir -p data/html
mkdir -p data/logs/php
mkdir -p data/logs/nginx
mkdir -p data/logs/mariadb
Laravel 儲存相關:
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache
🐳 Supervisor 管理進程
進程名稱 | 功能 |
---|---|
queue-worker |
執行 Laravel 的 queue 任務 |
scheduler |
每分鐘執行 Laravel schedule:run |
git-worker |
每分鐘從 Git 拉取最新程式碼 |
查看 log:
docker compose exec app tail -f /var/www/logs/supervisord.log
🧪 Git 版本控制(手動)
# 回到上一個版本
git checkout HEAD^
# 建立回退分支
git switch -c fix-rollback-version
# 回 commit 並推送
git push origin fix-rollback-version
📦 附加服務(可擴充)
你可以額外整合以下服務:
- Redis
- phpMyAdmin
- Laravel Telescope / Horizon
- Mailpit / Mailhog
✅ 建議調整
- 若為生產環境,請考慮設定更嚴格的權限與環境變數
- 使用
.env.production
搭配.env
切換設定檔
📜 License
MIT © 2025
Description
Languages
Shell
73%
Dockerfile
27%