與 Caddy 和 Dnsmasq 一起玩樂
草稿CaddyDockermacOSDnsmasq
直到最近,我還避免在開發 Docker 專案時對主機系統進行更改。但是,對於我的最新項目,我需要多個本地子網域來更好地開發和測試生產工作流程。在 /etc/hosts 檔案中為它們中的每一個添加一個條目似乎不再實用。這讓我產生了將動態域重定向到我的 Docker Compose 堆疊的想法。然後,Caddy 實例將處理到對應服務的路由請求。
目前,我選擇了 .localdev tld,但我仍在尋找更短的替代方案。不幸的是,.local 已經為 macOS 上的 mDNS 保留。
步驟1:在主機上安裝Dnsmasq
釀造安裝dnsmasq sudo mkdir -p /etc/resolver sudo sh -c 'echo "nameserver 127.0.0.1" > /etc/resolver/localdev' sudo sh -c 'echo "address=/localdev/127.0.0.1" > /opt/homebrew/etc/dnsmasq.d/localdev.conf' sudo sh -c 'echo "address=/localdev/::1" >> /opt/homebrew/etc/dnsmasq.d/localdev.conf' sudo brew 服務重新啟動 dnsmasq
ipv6 聲明是可選的,在 Chrome 下出現的效能問題是 v6-Adresse für den Aufruf aufzulösen,最初是 4-5 秒。
第二步:建立caddy文件
api.mycoolservice.localdev:443 {
tls 內部
反向代理 API:8000
}
mycoolservice.localdev:443 {
tls 內部
反向代理節點:3000
}
我將 Caddyfile 放置在與 docker-compose.yml 檔案相同的層級。由於不需要額外的配置,因此似乎沒有必要建立單獨的資料夾。此外,仍然可以透過傳統 URL 存取這些服務,例如 http://127.0.0.1:3000。
步驟 3:將 Caddy 新增至 Docker Compose 堆疊
# 其他服務 球童: 圖:球童:最新 連接埠: - “443:443” - “80:80” 卷: - ./Caddyfile:/etc/caddy/Caddyfile -球童數據:/數據 - caddy_config:/配置
瞧!現在可以在瀏覽器中存取該項目的服務,例如:
👍
步驟 4:獎勵 – 信任根證書
如今,如果您的瀏覽器不信任 Caddy 的根證書,很快就會變得令人沮喪。如果您想修復此問題,可以在 macOS 上執行下列步驟:
- 從 Caddy 卷中提取根證書。 俗話說,條條大路通羅馬。對我來說,最簡單的方法是打開 Docker Desktop,導航到「卷」選項卡,然後搜尋「caddy」。在儲存的資料下,前往 caddy/pki/local/ 並將 root.crt 檔案複製到桌面。
- 將根證書加入鑰匙圈。 雙擊該文件將其打開。如果鑰匙串存取應用程式沒有自動打開,這也將啟動它。
- 信任根憑證。 右鍵單擊證書,選擇“獲取資訊”,展開“信任”部分,並將其設定為“始終信任”。
如有必要,請重新啟動瀏覽器(Chrome/Safari),現在您應該擁有一個功能齊全的開發環境。 ✌️
元等級
★★★★★
- 日期
- 2024年12月26日大約 1 個月前
- 語言
- de
- 更新於
- 2024年12月31日