使用以下命令在docker中运行hugo遇到一个问题:ip+端口可以打开,域名+端口无法打开
docker run -itd --rm -p 1313:1313 --name my-hugo -v $(pwd):/src klakegg/hugo server -D
经过排查发现原因是 Cloudflare 没有开放1313端口,Cloudflare 支持的端口如下:
- Cloudflare 支持的 HTTP 端口:
- 80
- 8080
- 8880
- 2052
- 2082
- 2086
- 2095
- Cloudflare 支持的 HTTPS 端口:
- 443
- 2053
- 2083
- 2087
- 2096
- 8443
稍微修改一下命令再跑:
docker run -itd --rm -p 2086:2086 --name my-hugo -v $(pwd):/src klakegg/hugo server -D
这时会报错,因为我们刚才使用 docker -v 命令将宿主机目录挂载进入容器的对应目录,所以要删除之前的容器:
- docker stop my-hugo
- docker rm my-hugo
然后再运行刚才的命令:
docker run -itd --rm -p 2086:2086 --name my-hugo -v $(pwd):/src klakegg/hugo server -D
此时docker启动成功,输入 docker ps 查看端口是否成功映射。
但是,此时我们输入域名还是无法访问。
经过问题排查,我发现问题出在最后面的 server -D 命令, server -D 是 hugo 的默认访问模式,默认使用1313端口启动。
由于我们要改成CDN开放的2086端口,所以hugo的访问端口也要修改,使用 server -p 2086命令,自定义接口访问。
因此重复之前的步骤,先停止容器,再删除容器,再run
- docker stop my-hugo
- docker rm my-hugo
- docker run -itd -p 2086:2086 --name my-hugo --restart always -v $(pwd):/src klakegg/hugo server -p 2086
运行一下,就可以成功通过域名+端口访问了。