為了實現穩定、模組化且易於擴展的雲端平台,我們選擇使用 Docker 進行容器化部署,並以 Traefik 作為反向代理與自動 SSL 憑證管理工具,整體系統運行於 Google Cloud Platform 的虛擬機(VM)上。
我們的架構設計包含以下關鍵元件:
- Docker Compose:用來定義和管理 ASP.NET Core Web 應用、MySQL 資料庫、Prometheus 等多個服務容器
- Traefik:自動偵測容器變更,動態設定路由並整合 Let's Encrypt 提供 HTTPS 憑證
- Cloudflare:負責 DNS 管理與 Web 安全性加強,配合 Traefik 達成完整 HTTPS 流程
- 資料備份機制:每日透過排程自動備份資料庫並上傳至 Google Cloud Storage
什麼是 Docker?
Docker 是一個開源的容器化平台,允許開發者將應用程式及其依賴項打包進容器,確保它們在不同環境中能一致運行。容器化解決了「在我的機器上能運行,但在其他地方卻無法運行」的問題,並提高了應用程式的可擴展性和可移植性。
- 容器(Container):每個容器都是應用程式及其所有依賴組件的封閉環境,從而確保應用能在不同環境中一致運行。
- 映像(Image):容器的靜態定義,包含所有運行所需的檔案、庫和設定。
- Docker Compose:定義和管理多個容器服務的工具,讓開發者能夠在一個 YAML 配置文件中管理所有容器。
什麼是 Traefik?
Traefik 是一個現代化的反向代理和負載均衡器,專為容器化環境設計。它可自動檢測服務並配置路由,支持 HTTPS 自動證書管理,簡化了 SSL 憑證配置的過程。Traefik 能動態地將請求路由到合適的容器,保證流量高效分配。
- 反向代理: Traefik 充當反向代理,將外部請求根據路由規則引導到內部服務。
- 自動化配置: Traefik 可以動態發現並配置 Docker 容器,避免了繁瑣的手動設置。
- SSL 管理: Traefik 集成 Let's Encrypt,實現自動獲取和續期 SSL 憑證,保障 HTTPS 連接安全。
Docker 與 Traefik 的協作
在容器化架構中,Docker 負責管理應用程式的容器化,而 Traefik 則負責流量的路由與負載均衡。這兩者的結合,可以提供一個高效、靈活且易於擴展的系統架構。通過 Traefik,Docker 容器可以實現動態路由、自動配置和 HTTPS 管理,這使得應用程式部署和維護變得更為簡便。
通常,使用 Docker Compose 定義應用服務的容器,並且讓 Traefik 作為負載均衡器來處理來自用戶端的請求。Traefik 會根據容器的元數據動態設置路由,並自動配置相應的 SSL 證書,提供穩定、安全的連接。
總結
通過 Docker 和 Traefik 的結合,開發者能夠輕鬆管理微服務架構,實現高效且可擴展的系統部署。Docker 提供了靈活的容器化服務,而 Traefik 使流量路由、負載均衡和安全性管理變得簡單,讓應用程式部署變得更為自動化和高效。
整體部署流程搭配 GitHub Actions,自動建置 Docker 映像並推送至遠端主機,更新後的服務會立即由 Traefik 無縫切換。
為提升資安與穩定性,我們實作以下防護機制:
- HTTPS 強制導向與 TLS 憑證自動續期
- 使用 Cloudflare API Token 限制 DNS 寫入權限
- 服務容器僅暴露必要 Port,其餘全部由 Traefik 管控
- API 存取需通過 JWT 或 Token 驗證
目前該平台已成功應用於多項 IoT 與監控專案,包含感測資料接收、異常分析、即時圖表顯示與歷史紀錄查詢,為我們的客戶提供穩定、高可用的數位解決方案。