在 ServBay 中新增與設定基於 Docker 容器的網站
ServBay 是一款支援 macOS 與 Windows 的本地 Web 開發環境,支援多種語言與技術。除了能直接在 ServBay 內建的套件(如 PHP、Node.js、Python、Go、Java、資料庫等)上架設網站外,您也可以利用 Docker 容器來運作與管理您的網站或服務。這種做法可以大幅提升靈活性、環境隔離與一致性,特別適合需要特殊環境或依賴的專案。
本文將詳細說明如何透過 ServBay 將由 Docker 容器承載的網站整合進本地開發流程,並利用 ServBay 的反向代理功能串聯服務。
概述
將 ServBay 設定成反向代理後,您可以把特定網域的請求導入 Docker 容器中的服務端口。ServBay 主要負責流量入口(如 HTTPS 憑證、網域解析等),而 Docker 容器則專注於運行您的應用程式。這種架構結合了 ServBay 便利的管理介面與 Docker 強大的容器化能力。
以下步驟將從頭到尾指導您如何在 ServBay 內新增並設定由 Docker 容器承載的網站。
前置條件
開始之前,請確認已符合以下條件:
- 已安裝並執行 ServBay: 您已在 macOS 完成 ServBay 安裝並成功啟動。
- 已安裝並執行 Docker: 您已在 macOS 安裝 Docker Desktop 或其他 Docker 環境,且 Docker 服務已啟動。
- 已備妥 Docker 映像檔及容器: 您已建立或下載包含網站或應用的 Docker 映像檔,並可啟動容器。
新增網站的詳細步驟
步驟 1:準備並啟動 Docker 容器
首先,請確保您的 Docker 容器已在運行,且容器內的服務(如 Web 伺服器)監聽的端口已透過 Docker 端口映射功能,公開到主機(即您的 macOS)上的可用端口。
例如,您有一個簡單的 Nginx 容器,預設在容器內監聽 80 端口,以下指令可將主機的 8080 端口對應至容器的 80 端口:
bash
docker run -d --name my-nginx-servbay -p 8080:80 nginx
1
在此範例中,Docker 容器 my-nginx-servbay
內部 Nginx 服務監聽 80
端口,透過 -p 8080:80
參數,把容器的 80
端口映射到主機的 8080
端口。ServBay 實際串接時會連線到主機的 8080
端口。
請根據您的實際應用和 Dockerfile 設定,確認容器內服務監聽正確端口且已正確映射到主機端口。
步驟 2:開啟 ServBay 管理介面
在 macOS 應用程式資料夾中找到 ServBay
應用圖示,雙擊開啟 ServBay 管理介面。
步驟 3:進入網站管理頁面
開啟 ServBay 後,會看到主界面。於左側導航選單中,找到並點選 網站
選項。這會帶您進入 ServBay 的網站管理頁面,在此可查看與管理所有已新增的本地網站。
圖示:點選左側導航列「網站」進入管理頁面。
步驟 4:新增網站
在網站管理頁面下方可見一個 +
按鈕。點擊後,ServBay 會於右側展開全新的表單,供您輸入新網站的相關設定。
圖示:點擊頁面下方「+」按鈕以新增網站。
步驟 5:設定網站資訊
在網站設定表單中,您需填寫下列重要資訊:
- 名稱 (Name): 為您的網站指定易辨識的名稱,如
Docker Nginx Demo
,此名稱僅供 ServBay 內部管理用。 - 網域 (Domain): 輸入您希望透過瀏覽器存取此 Docker 網站時使用的本地網域。建議使用
.servbay.demo
後綴以避免與公共域名衝突,例如docker.servbay.demo
。ServBay 會自動配置 hosts 檔案,將此網域指定至本地127.0.0.1
。 - 協議 (Protocol): 選擇網站支援的協議,通常維持預設
HTTP/HTTPS
。ServBay 會同時監聽 HTTP(80)與 HTTPS(443)端口,並依 SSL 設定進行處理。 - SSL 憑證申請方式 (SSL Certificate Request Method): 建議選擇
ServBay CA
,ServBay 會自動產生並管理由 ServBay User CA 簽發的本地信任 SSL 憑證。只要安裝 ServBay Public CA 到系統鑰匙圈,瀏覽器即可信任這些本地憑證,利於 HTTPS 開發與測試。若有其他需求,也可選擇ACME
(如 Let's Encrypt 憑證)或Custom
(自行管理憑證)。 - 網站類型 (Website Type): 【重點】 請選擇
反向代理 (Reverse Proxy)
,表示 ServBay 作為此網域的入口,並將請求導向指定後端服務。 - IP 位址 (IP Address): 輸入 Docker 容器服務監聽的主機 IP,通常為本地的迴圈位址
127.0.0.1
。 - 端口 (Port): 輸入 Docker 容器服務於主機上開放的端口,此端口即
docker run -p <主機端口>:<容器端口>
命令中之<主機端口>
。例如用-p 8080:80
時,這裡應填寫8080
。
圖示:填寫 Docker 反向代理網站設定內容。
步驟 6:完成並儲存
填妥所有必要資訊後,點選表單底部的 新增 (Add)
按鈕。
ServBay 會自動處理您的要求,於 ServBay Web 伺服器(如 Caddy 或 Nginx)中新增相應的反向代理規則,並更新系統 hosts 檔案將網域指向本地。
儲存成功後,ServBay 會花短暫時間應用設定,稍候即可嘗試用網域存取新網站。
步驟 7:存取網站與使用快捷功能
設定存檔後返回網站管理頁面,您可見新網站條目,且狀態需顯示為「運行中」。
現在可於瀏覽器輸入指定網域(如 http://docker.servbay.demo
或 https://docker.servbay.demo
)存取網站。若一切設定正確,ServBay 會將請求導向 Docker 容器的服務,瀏覽器即可顯示容器回應的網頁內容。
在網站列表的條目中,ServBay 提供一系列實用快捷按鈕,包括:
- 以 IDE 開啟網站根目錄:(對反向代理型網站,此功能可能無效或導向 ServBay 設定目錄,詳細依版本與設定而定)
- 以瀏覽器開啟網站: 立即使用新分頁開啟該網站 URL。
- 查看網站日誌: 閱讀 ServBay 為該網站記錄的訪問及錯誤日誌,有助於除錯。
- 暫停/啟動網站: 臨時停用或啟用該網站的 ServBay 反向代理設定。
- 刪除網站: 從 ServBay 移除該網站配置。
圖示:ServBay 網站列表條目的快捷操作。
注意事項與最佳實踐
- Docker 容器狀態: 請確保目標 Docker 容器隨時在運行,不然 ServBay 將無法正確轉發請求。
- 端口映射: 注意 Docker 的端口映射(
-p
參數)及 ServBay 填寫的端口必須匹配,且主機端口不可被其它程式佔用。 - 防火牆: 檢查 macOS 防火牆設定,確保 ServBay 使用的端口(預設 80, 443)以及 Docker 對外開放的主機端口不被阻擋。
- Docker 網路模式: 多數情境推薦使用預設
bridge
網路模式並以-p
映射端口最為簡單。若用host
模式,ServBay 可直連容器監聽端口(容器聽 80 端口時 ServBay 寫 80 即可),但host
模式可能導致端口衝突。 - ServBay CA: 為方便 HTTPS 開發,建議安裝 ServBay Public CA,使 ServBay 產生的本地憑證被系統及瀏覽器信任,可避免安全警告。
常見問題與故障排除(FAQ)
Q: 新增網站後無法存取,瀏覽器顯示連線錯誤或逾時?
A: 請依下列順序排查:
- 確認 ServBay 網站狀態: 於 ServBay 網站管理頁確認網站條目是「運行中」。
- 確認 Docker 容器狀態: 在終端機輸入
docker ps
,驗證目標容器是否在運行。 - 檢查 Docker 端口映射: 輸入
docker ps
查看容器端口資訊(PORTS
欄位),確認主機端口(如0.0.0.0:8080->80/tcp
或127.0.0.1:8080->80/tcp
的8080
)與 ServBay 設定相符。 - 檢查 Docker 內部服務: 確认容器內 Web 服務(如 Nginx、Apache、Node)監聽正確端口且無錯誤,可查容器日誌(
docker logs <容器 ID 或名稱>
)。 - 檢查 ServBay 日誌: 在 ServBay 網站列表點選日誌圖示,閱讀訪問與錯誤日誌,找尋轉發失敗相關訊息。
- 檢查系統 hosts 檔: 雖 ServBay會自動處理,但可手動檢查
/etc/hosts
檔案,確認網域已對應至127.0.0.1
。 - 檢查防火牆: 確認防火牆未阻擋 ServBay 使用或 Docker 映射的主機端口。
Q: ServBay 可以直接管理 Docker 容器本身嗎?
A: ServBay 旨在管理本地 Web 服務、資料庫、語言環境及流量導向至後端服務(含 Docker 容器)。目前 ServBay 並不直接提供 Docker 容器生命周期管理(如啟動、停止或製作映像等)功能。容器相關維運仍需透過 Docker 命令列或 Docker Desktop 介面操作。
Q: 什麼是 ServBay CA?我為何需要安裝?
A: ServBay CA(憑證機構)是 ServBay 提供的本地 HTTPS 憑證解決方案,用以方便本地開發。ServBay User CA 專為您的本地網站簽發 SSL 憑證;ServBay Public CA 則是所有本地憑證的根憑證。只要安裝 ServBay Public CA 至系統鑰匙圈,作業系統與瀏覽器會信任由 ServBay User CA 簽發的所有憑證,瀏覽本地 HTTPS 網站時即可免除「不安全連線」警告,利於模擬生產環境進行測試與開發。
總結
在 ServBay 新增由 Docker 容器承載的網站,是高效且彈性的本地開發方式。ServBay 可作為流量與網域管控的核心,Docker 則提供環境隔離與運行特定應用的強大特性。只需簡單反向代理設定,即可輕鬆將各式 Docker 專案整合進 ServBay 工作流程。按照本文步驟與建議,您可順利設定並啟動 Docker 化的本地網站。