Docker 本地部署 Jekyll 静态博客

2021/05/10 更新 1 次 更新于 2026/08/08 Docker 共 2534 字,约 8 分钟

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(使用默认值即可) -> 部署

image-20260716213857753

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

image-20260716213925337

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

image-20260716214031235

2.2、Render

Render 是一个功能强大的全自动托管平台,支持 Web 服务、静态站点、后端 API、数据库、Cron Job 等。用户可以使用 Dockerfile 部署自定义服务,或直接部署 Git 仓库。

  1. 部分账号需要绑信用卡才能免费使用,部署服务时平台会临时扣除$1 验证,稍后会自动退回,服务部署后可以移除信用卡,避免后续扣费。
  2. 每月 5G 流量,可以部署共 25 个服务,2 个自定义域名
  3. Static Site 类型服务不限制时长,Web Service 服务每个月有 750 小时的免费时长,超过后会自动停机。
  4. 对于免费项目,如果超过 15 分钟没有 web 请求,,会自动停机休眠。对于已经休眠停机的项目,如果有 web 请求,会自动唤醒,并且开始对外提供服务,直到下次休眠。

登录 Render 后,Projects -> New-> Static Site -> Git Provider -> 选择博客项目 -> Branch 选择 built -> Publish Directory 填写 . -> 最后点击最下方的 Deploy static site

image-20260716221645771

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

image-20260716222158520

Search

    Table of Contents