154 lines
2.6 KiB
Markdown
154 lines
2.6 KiB
Markdown
# KTVCentral 開發環境部署說明
|
||
|
||
本專案使用 Docker 開發環境,整合以下元件:
|
||
|
||
- Laravel 12
|
||
- PHP 8.3 (FPM)
|
||
- MariaDB
|
||
- Redis + RedisInsight
|
||
- 自動 HTTPS:`nginx-proxy` + `letsencrypt-nginx-proxy-companion`
|
||
|
||
---
|
||
|
||
## 🚀 啟動方式
|
||
|
||
### 1. 建立 `.env`
|
||
|
||
複製 `.env.example` 為 `.env` 並設定參數:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
設定如下變數:
|
||
|
||
```env
|
||
APP_DOMAIN=your-domain.local
|
||
LETSENCRYPT_EMAIL=you@example.com
|
||
|
||
PROJECT_NAME=ktvcentral
|
||
DB_DATABASE=ktvcentral
|
||
DB_USERNAME=ktvcentral
|
||
DB_PASSWORD=secret
|
||
```
|
||
|
||
---
|
||
|
||
### 2. 啟動 Docker(自動 HTTPS)
|
||
|
||
預設使用 nginx-proxy + Let's Encrypt 自動管理憑證。
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.yaml -f docker-compose.letsencrypt.yaml up -d
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 首次初始化(自動執行於 entrypoint)
|
||
|
||
包含:
|
||
|
||
- 專案 clone(來自 `GIT_REPO_URL`)
|
||
- `composer install`
|
||
- `.env` 設定替換(自動注入 DB、Redis 等)
|
||
- `php artisan key:generate`
|
||
- `php artisan migrate --force`
|
||
- `npm install && npm run build`
|
||
- Laravel schedule 加入 crontab
|
||
- 透過 `supervisord` 啟動:
|
||
- php-fpm
|
||
- queue worker
|
||
- cron
|
||
|
||
---
|
||
|
||
## 🔧 手動 HTTPS 控制
|
||
|
||
### 自動 HTTPS(預設)
|
||
|
||
使用:
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.yaml -f docker-compose.letsencrypt.yaml up -d
|
||
```
|
||
|
||
### 關閉 HTTPS(無 Let's Encrypt)
|
||
|
||
使用:
|
||
|
||
```bash
|
||
docker-compose -f docker-compose.yaml up -d
|
||
```
|
||
|
||
---
|
||
|
||
## 📁 資料目錄結構
|
||
|
||
```
|
||
.
|
||
├── data/ # 專案會被 clone 到這(/var/www/html)
|
||
│ └── html/
|
||
├── docker/
|
||
│ ├── entrypoint.sh # 初始與 Laravel 任務處理
|
||
│ └── supervisord.conf # 管理 php-fpm、queue、cron
|
||
├── docker-compose.yaml
|
||
├── docker-compose.letsencrypt.yaml
|
||
├── .env
|
||
└── README.md
|
||
```
|
||
|
||
---
|
||
|
||
## 📥 Laravel 專案匯入來源
|
||
|
||
請於 `.env` 設定:
|
||
|
||
```env
|
||
GIT_REPO_URL=https://your.git.repo/your-project.git
|
||
```
|
||
|
||
---
|
||
|
||
## 🔒 自動 HTTPS 注意事項
|
||
|
||
- 需將你的 `APP_DOMAIN` 指向本機 IP,例如透過 `/etc/hosts`:
|
||
|
||
```plaintext
|
||
127.0.0.1 your-domain.local
|
||
```
|
||
|
||
- 憑證會儲存在 `./certs` 資料夾
|
||
- 若為公開伺服器,請確保 80 / 443 連接埠已開啟
|
||
|
||
---
|
||
|
||
## 🧹 常見指令
|
||
|
||
```bash
|
||
# 查看容器狀態
|
||
docker ps
|
||
|
||
# 重啟容器
|
||
docker-compose restart
|
||
|
||
# 進入 app 容器
|
||
docker exec -it ktvcentral_app bash
|
||
|
||
# 查看 log
|
||
docker-compose logs -f
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 預設啟動的 Supervisor 服務
|
||
|
||
- PHP-FPM (`php-fpm`)
|
||
- Laravel Queue Worker (`php artisan queue:work`)
|
||
- Cron(執行 `php artisan schedule:run` 每分鐘)
|
||
|
||
---
|
||
|
||
## 📄 License
|
||
|
||
MIT
|