Jekyll Docker是一个软件映像,它包含了封装好的形式让你可以即时使用的Jekyll,和它的许多依赖项。它包括了一套默认的gems,不同的映像类型拥有不同的额外工具包,并且封装器可以让大多数用户从头到尾更顺畅的运行Jekyll。如果你想了解更多关于Docker的信息,请访问https://docker.com,如果你想了解更多关于Jekyll的信息,请访问https://github.com/jekyll/jekyll

映像类型


  • jekyll/jekyll : 默认映像。
  • jekyll/minimal : 最小化的映像。
  • jekyll/builder : 包含工具。

标准

标准映像(jekyll/jekyll) 包括了一套关于”dev”包的默认设置,与Node.js一起,还有其他让Jekll简单化的东西。它也包含一堆社区希望我们维护的默认的gems在这个映像里。

用法

  1. export JEKYLL_VERSION=3.8
  2. docker run --rm \
  3. --volume="$PWD:/srv/jekyll" \
  4. -it jekyll/jekyll:$JEKYLL_VERSION \
  5. jekyll build

构建器(Builder)

构建器映像附带了标准映像中没有包含的额外内容,比如 lftpopenssh 和其他额外包,这些额外包是为那些使用CI将Jekyll构建部署到另一台服务器的人准备的。

用法

  1. export JEKYLL_VERSION=3.8
  2. docker run --rm \
  3. --volume="$PWD:/srv/jekyll" \
  4. -it jekyll/builder:$JEKYLL_VERSION \
  5. jekyll build

最小化(Minimal)

最小的映像跳过所有额外的gems喝所有额外的开发依赖,并留下一个非常小的映像下载。这是为那些除了Jekyll以外不需要其他任何东西的人准备的。

用法

如果你想要使用像Nokogiri这样的东西,你需要提供一个 **.apk** 文件,我们不安装任何开发头文件或依赖项,所以基于C的gems将无法安装。

  1. export JEKYLL_VERSION=3.8
  2. docker run --rm \
  3. --volume="$PWD:/srv/jekyll" \
  4. -it jekyll/minimal:$JEKYLL_VERSION \
  5. jekyll build

依赖项


Jekyll Docker会尝试安装任何你在Gemfile中列出的依赖项, 匹配你在Gemfile.lock中的版本,包括Jekyll本身,如果你有个版本并不匹配你正在用的映像(你应该用 gem "jekyll", "~>3.8" 来安装次要版本,如果你用的映像标签是”3.7.3”)

更新

如果你提供了一个 Gemfile 并且希望更新你的 Gemfile.lock 你可以运行以下代码:

  1. export JEKYLL_VERSION=3.8
  2. docker run --rm \
  3. --volume="$PWD:/srv/jekyll" \
  4. -it jekyll/jekyll:$JEKYLL_VERSION \
  5. bundle update

缓存

你可以在映像里用指向 /usr/local/bundledocker --volume 启用Jekyll Docker的缓存功能。对于在CI上运行构建并希望它们更快的用户来说,这样比较理想。

我的Gems不会缓存

如果你没有背离我们提供的默认Gems集合(意即:添加**在映像中还不存在的Gems到你的Gemfile中),那么bundler默认情况下将不会创建副本并进行缓存。它仅仅依赖于 $GEM_HOME 中已经安装的内容。这是在使用 $GEM_HOME w/ $BUNDLE_HOMEbundle** 的默认行为(观察到的…但是没有确认过…)

用法

  1. export JEKYLL_VERSION=3.8
  2. docker run --rm \
  3. --volume="$PWD:/srv/jekyll" \
  4. --volume="$PWD/vendor/bundle:/usr/local/bundle" \
  5. -it jekyll/jekyll:$JEKYLL_VERSION \
  6. jekyll build

缓存卷的根(在这种情况下是vendor)也必须通过 **_config.yml 排除数组设置**从Jekyll构建中排除。

配置


你可以使用环境变量来配置Jekyll的某些部分,不能使用环境变量配置的内容你可以使用Jekyll CLI来配置。即使使用封装器,我们也会在最终调用Jekyll时将所有参数传递给它。

环境变量 默认
JEKYLL_UID 1000
JEKYLL_GID 1000
JEKYLL_DEBUG, ""
VERBOSE ""
FORCE_POLLING ""

如果你想知道Jekyll的CLI选项,你可以访问Jekyll的帮助网站

程序包


你可以通过提供一个名为 .apk 的文件,每行一个包名来安装系统包 。如果你需要找到你希望使用的给定命令的包名,可以访问https://pkgs.alpinelinux.org我们提供为构建器和标准映像提供了很多Ruby的依赖项。这里包括 ruby-dev** , xml , xslt , git ,和大多数Ruby包可能需要的其他东西。**

构建

  1. script/build

https://github.com/envygeeks/jekyll-docker/blob/master/README.md