You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Docker中运行Jekyll时自动恢复缺失Gem的方法

解决Jekyll Docker环境下插件配置冗余与依赖缺失问题

方案1:直接用GitHub Pages专用Docker镜像(最省事)

GitHub Pages官方维护的jekyll/github-pages镜像已经预装了所有官方支持的插件——包括你用的jekyll-seo-tag、jekyll-sitemap、jemoji,完全不用手动装依赖,也不用在docker-compose.yml里重复写插件列表。

修改你的docker-compose.yml:

version: '3'
services:
  jekyll:
    image: jekyll/github-pages:latest
    command: jekyll serve --watch --force_polling --verbose
    ports:
      - "4000:4000"
    volumes:
      - .:/srv/jekyll

启动容器后,Jekyll会自动读取_config.yml里的插件配置,不会再报Gem缺失的错误。

方案2:官方Jekyll镜像+生成匹配的Gemfile(自定义性更强)

如果不想用GitHub Pages镜像,就生成Gemfile来统一管理依赖,彻底消除配置冗余:

  1. 在项目根目录新建Gemfile,内容如下:
source "https://rubygems.org"
gem "github-pages", group: :jekyll_plugins

github-pages这个Gem已经打包了你需要的所有插件,不用单独声明。

  1. 修改docker-compose.yml,让容器先执行bundle安装依赖,再启动Jekyll:
version: '3'
services:
  jekyll:
    image: jekyll/jekyll:latest
    command: >
      bash -c "bundle install && jekyll serve --watch --force_polling --verbose"
    ports:
      - "4000:4000"
    volumes:
      - .:/srv/jekyll
      - ./vendor/bundle:/usr/local/bundle  # 挂载缓存目录,避免每次启动都重新装依赖
  1. 启动容器后,bundle会自动安装所有需要的Gem,Jekyll读取_config.yml时就能找到对应插件,再也不用在两个配置文件里重复写插件了。

注意点

  • Windows环境下必须加--force_polling参数,不然Jekyll监听不到本地文件的修改(Docker在Windows上的文件系统监听有兼容性问题)。
  • 依赖管理统一交给github-pages Gem或Gemfile,别在_config.yml和docker-compose.yml里重复配置插件。

内容的提问来源于stack exchange,提问作者mu88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:30:53