1、本地部署
使用 Docker 本地部署 Jekyll 项目,供服务器上搭建个人博客、本地实时预览调试代码。
# 拉取 Jekyll 博客项目,本博客使用的是 mzlogin 模板
git clone https://github.com/mzlogin/mzlogin.github.io
cd mzlogin.github.io
# 使用下方 Dockerfile 构建镜像来运行 Jekyll 博客环境
docker build -t jekyll-blog:1.0 .
# 查看镜像
docker images
# 直接使用宿主机网络启动容器,修改源文件时会自动重新构建
docker run -d --network host --name blog -v $(pwd):/blog -e JEKYLL_HOST=192.168.216.128 jekyll-blog:1.0
# 查看构建日志
docker logs -f blog
# 开放端口
firewall-cmd --zone=public --permanent --add-port=4000/tcp
firewall-cmd --reload
Dockerfile 文件内容:
# 使用 alpine 版本减小镜像体积
FROM ruby:3.3.11-alpine
# 工作目录
WORKDIR /blog
# 安装依赖,清理缓存
COPY Gemfile .
RUN sed -i 's|https://dl-cdn.alpinelinux.org|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apk/repositories && \
apk add --no-cache git tzdata && \
apk add --no-cache --virtual .build-deps build-base zlib-dev openssl-dev && \
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone && \
bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems && \
bundle install --verbose && \
bundle clean --force && \
apk del .build-deps && \
rm -rf /usr/local/bundle/cache/*.gem && \
rm -rf /usr/local/bundle/gems/*/test && \
rm -rf /usr/local/bundle/gems/*/spec
ENV JEKYLL_HOST=127.0.0.1
CMD bundle exec jekyll serve -w --host=$JEKYLL_HOST
浏览器访问查看效果:http://192.168.216.128:4000
镜像使用版本参考:Github Pages 运行环境
2、外网部署
2.1、Cloudflare
Cloudflare Workers 是一种基于 JavaScript 的无服务器计算平台,允许你在 Cloudflare 的边缘网络上运行代码,而无需管理传统的服务器基础设施。它能在全球范围内的 Cloudflare 数据中心上执行代码,以提供快速、低延迟的服务。
- 部署限制:官方说明,需要部署的项目分支文件小于 25M,否则部署会报错,个人博客使用完全够用。
✘ [ERROR] Asset too large
Cloudflare Workers supports assets with sizes of up to 25 MiB. We found a file /opt/buildhome/repo/.git/objects/pack/pack-e976ca20ce2e79dde8b5ec5a5ac83d21e75aa903.pack with a size of 1.93 GiB.
登录 Cloudflare 后,进入 首页->计算->Workers 和 Pages,点击 创建应用程序 -> Connect Github -> 选择博客仓库 -> 下一步 -> Set up your application(使用默认值即可) -> 部署

点击部署后 页面自动刷新-> 点击取消构建,修改 设置 -> 构建 -> 分支控制,将分支控制默认 master 分支 改为 built 分支,直接使用编译好的静态文件来部署,而不是从源码开始构建。

修改博客仓库文件,提交并推送到远程仓库来测试,Cloudflare 会自动构建更新静态文件,Workers 和 Pages -> 部署 页面可以查看是否部署成功,最后在 域 下添加自定义域名来测试访问。

2.2、Render
Render 是一个功能强大的全自动托管平台,支持 Web 服务、静态站点、后端 API、数据库、Cron Job 等。用户可以使用 Dockerfile 部署自定义服务,或直接部署 Git 仓库。
- 部分账号需要绑信用卡才能免费使用,部署服务时平台会临时扣除$1 验证,稍后会自动退回,服务部署后可以移除信用卡,避免后续扣费。
- 每月 5G 流量,可以部署共 25 个服务,2 个自定义域名
- Static Site 类型服务不限制时长,Web Service 服务每个月有 750 小时的免费时长,超过后会自动停机。
- 对于免费项目,如果超过 15 分钟没有 web 请求,,会自动停机休眠。对于已经休眠停机的项目,如果有 web 请求,会自动唤醒,并且开始对外提供服务,直到下次休眠。
登录 Render 后,Projects -> New-> Static Site -> Git Provider -> 选择博客项目 -> Branch 选择 built -> Publish Directory 填写 . -> 最后点击最下方的 Deploy static site

最后在 Setting-> Custom Domains 下添加自定义域名,关闭 Render Subdomain

- 本文作者:Nine
- 本文链接:https://blog.nine.gt.tc/2021/05/10/docker-install-jekyll/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)