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在这个映像里。
用法
export JEKYLL_VERSION=3.8docker run --rm \--volume="$PWD:/srv/jekyll" \-it jekyll/jekyll:$JEKYLL_VERSION \jekyll build
构建器(Builder)
构建器映像附带了标准映像中没有包含的额外内容,比如 lftp 、 openssh 和其他额外包,这些额外包是为那些使用CI将Jekyll构建部署到另一台服务器的人准备的。
用法
export JEKYLL_VERSION=3.8docker run --rm \--volume="$PWD:/srv/jekyll" \-it jekyll/builder:$JEKYLL_VERSION \jekyll build
最小化(Minimal)
最小的映像跳过所有额外的gems喝所有额外的开发依赖,并留下一个非常小的映像下载。这是为那些除了Jekyll以外不需要其他任何东西的人准备的。
用法
如果你想要使用像Nokogiri这样的东西,你需要提供一个 **.apk** 文件,我们不安装任何开发头文件或依赖项,所以基于C的gems将无法安装。
export JEKYLL_VERSION=3.8docker run --rm \--volume="$PWD:/srv/jekyll" \-it jekyll/minimal:$JEKYLL_VERSION \jekyll build
依赖项
Jekyll Docker会尝试安装任何你在Gemfile中列出的依赖项, 匹配你在Gemfile.lock中的版本,包括Jekyll本身,如果你有个版本并不匹配你正在用的映像(你应该用 gem "jekyll", "~>3.8" 来安装次要版本,如果你用的映像标签是”3.7.3”)
更新
如果你提供了一个 Gemfile 并且希望更新你的 Gemfile.lock 你可以运行以下代码:
export JEKYLL_VERSION=3.8docker run --rm \--volume="$PWD:/srv/jekyll" \-it jekyll/jekyll:$JEKYLL_VERSION \bundle update
缓存
你可以在映像里用指向 /usr/local/bundle 的 docker --volume 启用Jekyll Docker的缓存功能。对于在CI上运行构建并希望它们更快的用户来说,这样比较理想。
我的Gems不会缓存
如果你没有背离我们提供的默认Gems集合(意即:添加**在映像中还不存在的Gems到你的Gemfile中),那么bundler默认情况下将不会创建副本并进行缓存。它仅仅依赖于 $GEM_HOME 中已经安装的内容。这是在使用 $GEM_HOME w/ $BUNDLE_HOME 时 bundle** 的默认行为(观察到的…但是没有确认过…)
用法
export JEKYLL_VERSION=3.8docker run --rm \--volume="$PWD:/srv/jekyll" \--volume="$PWD/vendor/bundle:/usr/local/bundle" \-it jekyll/jekyll:$JEKYLL_VERSION \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包可能需要的其他东西。**
构建
script/build
https://github.com/envygeeks/jekyll-docker/blob/master/README.md
