2025-06-25 14:22:52 +08:00
2025-06-18 15:02:28 +08:00
2025-06-17 12:47:14 +08:00
2025-06-17 12:47:14 +08:00
2025-06-20 09:58:03 +08:00
2025-06-25 14:22:52 +08:00
2025-06-17 12:47:14 +08:00
2025-06-17 12:47:14 +08:00
2025-06-17 12:47:14 +08:00
2025-06-17 12:47:14 +08:00
2025-06-17 12:47:14 +08:00
2025-06-17 12:47:14 +08:00

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
No description provided
Readme 48 KiB
Languages
Shell 73%
Dockerfile 27%