All checks were successful
CD Pipeline / deploy (push) Successful in 1m13s
根因:cd.yaml sync 模式用 `docker compose restart`,對「不存在的容器」 直接報錯 → 任何外力(人工 docker rm、orphan 清理、別專案連動)清掉容器後, 下次 sync 部署 100% 失敗 → 健康檢查 5 連 502。 修法: - sync 模式改 `docker compose up -d --no-deps`:image 未變時對既存容器 no-op(觸發熱掛載),對不存在則自動 create - 緊急回滾 step 同步從 `docker restart momo-pro-system ...` 改 `compose up -d`, 否則容器不存在時連回滾都救不回 驗證:2026-04-28 15:33 跑 P0 救急已成功讓 4/4 容器 healthy + HTTP 200。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
79 lines
2.8 KiB
Markdown
79 lines
2.8 KiB
Markdown
# EwoooC 運維與自動化手冊 (DevOps Handbook)
|
|
|
|
## 🌐 伺服器連線
|
|
| 環境 | 主機 | 指令 |
|
|
|---|-|---|
|
|
| **正式 (EwoooC)** | 192.168.0.188 | `ssh -J wooo@192.168.0.110 ollama@192.168.0.188` |
|
|
| **周邊 (UAT)** | 192.168.0.110 | `ssh wooo@192.168.0.110` |
|
|
| **安全 (Kali)** | 192.168.0.112 | `ssh kali@192.168.0.112` |
|
|
|
|
---
|
|
|
|
## 🐋 Docker & Docker Compose 指令 (188 主機)
|
|
執行路徑:`/home/ollama/momo-pro`
|
|
|
|
### 常用操作
|
|
- **查看狀態**: `docker ps | grep momo`
|
|
- **查看日誌**: `docker logs -f momo-pro-system --tail 100`
|
|
- **重啟主應用**: `docker restart momo-pro-system`
|
|
- **全面啟動**: `docker compose up -d`
|
|
- **進入資料庫**: `docker exec -it momo-db psql -U momo`
|
|
|
|
### 影像管理
|
|
- **重建影像**: `docker compose build --no-cache momo-pro-system`
|
|
- **清理過期資源**: `docker system prune -f`
|
|
|
|
---
|
|
|
|
## 🌐 Nginx 反向代理 (110 主機)
|
|
配置路徑:`/etc/nginx/sites-enabled/momo`
|
|
|
|
- **重新載入**: `sudo systemctl reload nginx`
|
|
- **語法檢查**: `sudo nginx -t`
|
|
|
|
---
|
|
|
|
## 🤖 n8n 工作流程管理 (188 主機)
|
|
- **進入容器**: `docker exec -it n8n /bin/sh`
|
|
- **手動執行 Workflow**: `docker exec n8n n8n execute --id=<workflow_id>`
|
|
- **列出 Workflow**: `docker exec n8n n8n list:workflow`
|
|
|
|
---
|
|
|
|
## ❄️ K8s 相關指令 (已撤除,備份存檔)
|
|
- **查看 Pod**: `kubectl get pods -n momo`
|
|
- **重啟 Deployment**: `kubectl rollout restart deployment/momo-app -n momo`
|
|
- **查看日誌**: `kubectl logs -f deployment/momo-app -n momo`
|
|
|
|
---
|
|
|
|
## 🏥 健康檢查與自動修復
|
|
**監控腳本**: `/home/wooo/scripts/domain-health-monitor.sh` (於 110 執行)
|
|
**頻率**: 每 5 分鐘
|
|
- `https://mo.wooo.work/health` -> 200
|
|
- `https://momo.wooo.work/health` -> 200
|
|
- `https://monitor.wooo.work/` -> 200
|
|
- `https://registry.wooo.work/v2/` -> 401
|
|
|
|
---
|
|
|
|
## 🆘 故障排除 (Troubleshooting) - 2026-04-28 實戰總結
|
|
|
|
### 1. 網站 502 Bad Gateway (Nginx 找不到後端)
|
|
- **原因**: 110 與 188 之間的 SSH 隧道中斷。
|
|
- **檢查**: 在 110 執行 `curl -I http://127.0.0.1:5003/health`。
|
|
- **修復**: 在 110 執行 `ssh -fN -L 5003:127.0.0.1:5003 ollama@192.168.0.188` 重啟隧道。
|
|
|
|
### 2. CI/CD 報錯 `parent snapshot ... not found`
|
|
- **原因**: Docker Buildx 快取損壞。
|
|
- **修復**: 在 `.gitea/workflows/cd.yaml` 中使用 `docker compose build --no-cache`。
|
|
|
|
### 3. CI/CD 報錯 `No such container: momo-pro-system`
|
|
- **原因**: Sync 模式使用硬編碼容器名,但容器可能已被重建或改名。
|
|
- **修復**: 使用 `docker compose restart <service_name>` 取代直接重啟容器。
|
|
|
|
### 4. Telegram Bot 代碼更新無效 (幽靈容器)
|
|
- **原因**: `docker-compose.yml` 遺漏了 `/app/routes` 的 Volume 掛載。
|
|
- **檢查**: `docker inspect momo-telegram-bot | jq '.[0].Mounts'`。
|
|
- **修復**: 確保 `volumes` 段落包含 `- ./routes:/app/routes:ro`。
|