構建一個包含 Caddy 服務器的 Docker 鏡像,關鍵部分: https://github.com/caddyserver/caddy-docker/blob/master/Dockerfile.tmpl這個 Dockerfile 精心設計,用于自動化構建一個包含最新版 Caddy Web 服
在構建一個包含 Caddy 服務器的 Docker 鏡像時,關鍵部分是了解如何使用Dockerfile.tmpl。該文件是專門設計用于自動構建最新版Caddy Web服務器的Docker鏡像,支持自動 HTTPS,并配置了基本的文件結構和執(zhí)行環(huán)境。
1. 刪除空格:Dockerfile中的某一行使用了某種模板引擎(如Go的text/template)來處理字符串,移除了.base變量值開頭和結尾的空白字符。
2. 安裝依賴:添加必要的Alpine Linux包作為Caddy服務器的依賴,包括CA證書、libcap以及mailcap。
3. 創(chuàng)建目錄和下載配置以及歡迎頁面:在Dockerfile中創(chuàng)建了Caddy所需的多個目錄結構,用于存放配置、數據、執(zhí)行文件等。使用wget命令從GitHub下載Caddy的默認配置文件Caddyfile和歡迎頁面index.html。
4. 設置Caddy版本環(huán)境變量:在Dockerfile中設置環(huán)境變量CADDY_VERSION為指定版本的Caddy服務器。
5. 下載和安裝Caddy二進制文件:根據當前系統的架構動態(tài)選擇Caddy的二進制文件進行下載,并通過SHA512校驗和確保文件完整性。然后解壓并安裝到/usr/bin,設置適當的權限和功能(如網絡綁定服務的能力)。
6. 文件位置的環(huán)境變量:在Dockerfile中設置環(huán)境變量以指定Caddy的配置和數據存儲位置。
7. Docker鏡像元數據的標簽:添加一系列標簽來描述鏡像的版本、標題、描述等元數據。
8. 暴露端口:聲明容器運行時需要暴露的端口,包括HTTP(80)、HTTPS(443)、UDP上的HTTPS(443/udp)以及Caddy的監(jiān)控端口(2019)。
9. 工作目錄和默認命令:設置工作目錄為/srv,并定義容器啟動時執(zhí)行的默認命令,即運行Caddy服務器,使用Caddyfile配置文件。