在 ServBay 中新增並配置基於 Docker 容器的網站
ServBay 是一款專為 macOS 設計的本地網站開發環境,可支援多種程式語言及技術棧。除了直接運行 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 容器,內部 Nginx 監聽 80 埠,可用以下指令將主機的 8080 埠對映至容器的 80 埠:
docker run -d --name my-nginx-servbay -p 8080:80 nginx
在這個範例中,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。大多數本地 Docker 環境建議填入「127.0.0.1」。
- 埠口 (Port): 輸入您的 Docker 容器服務在主機端對映的埠號,這對應到您下
docker run -p <主機埠>:<容器埠>
時<主機埠>
的設定。比如用了-p 8080:80
,這裡就要填「8080」。
圖示:填寫 Docker 反向代理網站的配置信息。
步驟 6:完成並儲存設定
所有必要資訊填寫完畢後,請點擊表單底部的「添加 (Add)」按鈕。
ServBay 會自動處理您的申請,於其 Web 伺服器(如 Caddy 或 Nginx)的設定中新增對應反向代理規則,並同步更新系統 hosts 檔,將您填寫的本地域名指向本機。
存檔完成後,ServBay 可能會需片刻以套用新設定,之後便可測試訪問該域名。
步驟 7:訪問網站並善用快捷操作
設定儲存完成後,返回網站管理頁面,會看到新添加的網站條目,並確認其狀態為「運行中」。
您現在就能在瀏覽器中訪問此域名(例如 http://docker.servbay.demo
或 https://docker.servbay.demo
)。只要設定正確,ServBay 就會成功將請求轉發至 Docker 容器的服務,並於瀏覽器顯示該容器回應的頁面內容。
在網站列表條目上,ServBay 提供一系列便捷功能鈕,包含:
- 使用 IDE 開啟網站根目錄: (對於反向代理網站類型,該按鈕可能無法使用或將指向 ServBay 設定目錄,詳細行為視 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: 強烈建議安裝 ServBay Public CA,有助於本地 HTTPS 開發,令瀏覽器信任 ServBay 生成的本地憑證,避免跳出安全警告。
常見問題與疑難排解 (FAQ)
Q: 新增網站後無法訪問,瀏覽器顯示連線錯誤或逾時?
A: 可按以下步驟檢查:
- 檢查 ServBay 網站狀態: 於 ServBay 網站管理頁面確認該條目狀態是否為「運行中」。
- 檢查 Docker 容器狀態: 在終端機執行
docker ps
,確保目標 Docker 容器正在執行。 - 檢查 Docker 埠口對映: 執行
docker ps
,查看容器PORTS
欄位資訊,確認主機埠(如0.0.0.0:8080->80/tcp
或127.0.0.1:8080->80/tcp
裡的8080
)與您在 ServBay 設定的相符。 - 檢查容器內服務狀態: 確保容器內的 Web 服務(如 Nginx、Apache、Node 應用等)有正確監聽,且無內部錯誤。可查詢 Docker 容器日誌(
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 CLI 或 Docker Desktop 等工具。
Q: 什麼是 ServBay CA?為何需要安裝?
A: ServBay CA(Certificate Authority)是為本地 HTTPS 開發提供的憑證管理系統。ServBay User CA 會簽發本地網站的 SSL 憑證,ServBay Public CA 則為用戶 CA 的根憑證。安裝 Public CA 到系統鑰匙串後,您的系統和瀏覽器就會信任所有由 ServBay User CA 簽發的憑證,瀏覽本地網站時不會再看到「不安全連線」的提示。對於模擬生產環境進行 HTTPS 本地開發與測試至為重要。
小結
於 ServBay 中新增以 Docker 容器承載的網站,是靈活高效的本地開發模式。ServBay 作為本地開發中心負責流量與網域統一管理,同時善用 Docker 的隔離與執行優勢。透過簡單的反向代理設定,您就能快速將多個 Docker 化專案整合進專屬的 ServBay 開發流程。只要依循本文流程與注意事項,即可順利建置並啟動您的 Dockerized 本地網站。