Docker 快速开始
Fast-Https 官方镜像内置了 fast-https 二进制、一份默认配置和一个示例站点,拉取后把自己的配置目录与站点目录挂载进去即可运行。三种基础镜像的容器内路径并不相同,启动前请先确认下面的对照表。
1 镜像说明
| 镜像 tag | 基础系统 | 工作目录 | 配置目录 | 站点目录 |
|---|---|---|---|---|
alpine | Alpine Linux | /app | /app/config | /app/httpdoc |
ubuntu | Ubuntu 24.04 | /usr/local/fast-https | /usr/local/fast-https/config | /usr/local/fast-https/httpdoc |
centos7 | CentOS 7 | /usr/local/fast-https | /usr/local/fast-https/config | /usr/local/fast-https/httpdoc |
三个镜像都对外声明 80、443 端口,并已设置 FASTHTTPS_FOREGROUND=1,容器以前台方式运行,可直接配合 -d 在后台常驻。
镜像由源码仓库 build/ 下的 Dockerfile 构建,可自行核对:build/Dockerfile(Alpine)、build/docker/Dockerfile_ubuntu、build/docker/Dockerfile_centos7。
2 拉取镜像
docker pull registry.cn-beijing.aliyuncs.com/ncepu-ideal/fast-https:alpine
按需要换成其他基础系统:
docker pull registry.cn-beijing.aliyuncs.com/ncepu-ideal/fast-https:ubuntu
docker pull registry.cn-beijing.aliyuncs.com/ncepu-ideal/fast-https:centos7
3 准备挂载目录
镜像内已经放了一份默认配置和示例首页;一旦用 -v 把宿主机目录挂到容器里,容器内原有内容会被完全覆盖。所以宿主机上的目录要先准备好,不能是空目录:
/path/to/config
├── fast-https.json # 主配置,含 listen 端口与站点定义
├── mime.json # MIME 类型表
├── fastcgi.conf # FastCGI 相关配置
├── cert/ # 证书目录
└── conf.d/ # 站点配置目录
/path/to/httpdoc
└── root/
└── index.html # 站点根目录内容
最省事的做法是先把镜像内置的默认文件拷出来,再按需修改:
mkdir -p /path/to/config /path/to/httpdoc
docker run --rm registry.cn-beijing.aliyuncs.com/ncepu-ideal/fast-https:alpine \
sh -c "tar -C /app -cf - config httpdoc" | tar -C /path/to -xf -
4 启动容器
Alpine 版(下文以此为例):
docker run -d --name fast-https \
-p 8080:80 \
-p 443:443 \
-v /path/to/config:/app/config \
-v /path/to/httpdoc:/app/httpdoc \
--restart unless-stopped \
registry.cn-beijing.aliyuncs.com/ncepu-ideal/fast-https:alpine
参数说明:
-p 8080:80:宿主8080→ 容器 HTTP80。宿主机 80 端口已被占用时可以继续用 8080,只是访问地址要带端口。-p 443:443:宿主443→ 容器 HTTPS443,证书与对外链接按标准端口工作。若宿主 443 已被其他服务占用,可改成-p 8443:443,但对外链接需要带端口。-v /path/to/config:/app/config:宿主机配置目录 → 容器内配置目录。-v /path/to/httpdoc:/app/httpdoc:宿主机站点目录 → 容器内站点根目录。--restart unless-stopped:异常退出或宿主机重启后自动拉起。-d:后台运行。去掉-d则日志直接输出到终端,Ctrl+C即停止。
使用 ubuntu / centos7 镜像时,把两个 -v 的容器侧路径换成 /usr/local/fast-https/config 与 /usr/local/fast-https/httpdoc:
docker run -d --name fast-https \
-p 8080:80 -p 443:443 \
-v /path/to/config:/usr/local/fast-https/config \
-v /path/to/httpdoc:/usr/local/fast-https/httpdoc \
--restart unless-stopped \
registry.cn-beijing.aliyuncs.com/ncepu-ideal/fast-https:ubuntu
5 验证
# 容器是否在运行
docker ps --filter name=fast-https
# 查看启动日志
docker logs -f fast-https
# 请求首页
curl -I http://127.0.0.1:8080/
浏览器访问 http://<服务器IP>:8080/ 应能看到站点首页。若返回 404,先确认宿主机的 httpdoc/root/index.html 是否存在;若容器反复重启,检查 fast-https.json 的写法(该文件允许 // 注释,但 JSON 尾逗号会导致解析失败)。
6 自行构建镜像
镜像也可以从源码构建。Dockerfile 中的 COPY go.mod go.sum 与 COPY . . 依赖仓库根目录作为构建上下文,因此必须在仓库根目录执行 docker build,并用 -f 指定 Dockerfile:
git clone https://github.com/ncepu-iDealStudio/Fast-Https.git
cd Fast-Https
# Alpine(默认 Dockerfile,位于 build/Dockerfile)
docker build -f build/Dockerfile -t fast-https:tag .
# Ubuntu
docker build -f build/docker/Dockerfile_ubuntu -t fast-https:tag .
# CentOS 7
docker build -f build/docker/Dockerfile_centos7 -t fast-https:tag .
构建阶段使用 golang:1.27-alpine 并以 CGO_ENABLED=0 静态编译,产物再复制进运行时镜像;三个镜像的工作目录分别是 /app(Alpine)与 /usr/local/fast-https(Ubuntu、CentOS 7),与上文的挂载路径一致。国内网络环境也可以从 gitee 镜像仓库克隆:https://gitee.com/ncepu-bj/fast-https。