构建一个包含 Caddy 服务器的 Docker 镜像,关键部分: https://github.com/caddyserver/caddy-docker/blob/master/Dockerfile.tmpl这个 Dockerfile 精心设计,用于自动化构建一个包含最新版 Caddy Web 服
在构建一个包含 Caddy 服务器的 Docker 镜像时,关键部分是了解如何使用Dockerfile.tmpl。该文件是专门设计用于自动构建最新版Caddy Web服务器的Docker镜像,支持自动 HTTPS,并配置了基本的文件结构和执行环境。
1. 删除空格:Dockerfile中的某一行使用了某种模板引擎(如Go的text/template)来处理字符串,移除了.base变量值开头和结尾的空白字符。
2. 安装依赖:添加必要的Alpine Linux包作为Caddy服务器的依赖,包括CA证书、libcap以及mailcap。
3. 创建目录和下载配置以及欢迎页面:在Dockerfile中创建了Caddy所需的多个目录结构,用于存放配置、数据、执行文件等。使用wget命令从GitHub下载Caddy的默认配置文件Caddyfile和欢迎页面index.html。
4. 设置Caddy版本环境变量:在Dockerfile中设置环境变量CADDY_VERSION为指定版本的Caddy服务器。
5. 下载和安装Caddy二进制文件:根据当前系统的架构动态选择Caddy的二进制文件进行下载,并通过SHA512校验和确保文件完整性。然后解压并安装到/usr/bin,设置适当的权限和功能(如网络绑定服务的能力)。
6. 文件位置的环境变量:在Dockerfile中设置环境变量以指定Caddy的配置和数据存储位置。
7. Docker镜像元数据的标签:添加一系列标签来描述镜像的版本、标题、描述等元数据。
8. 暴露端口:声明容器运行时需要暴露的端口,包括HTTP(80)、HTTPS(443)、UDP上的HTTPS(443/udp)以及Caddy的监控端口(2019)。
9. 工作目录和默认命令:设置工作目录为/srv,并定义容器启动时执行的默认命令,即运行Caddy服务器,使用Caddyfile配置文件。