mySpinx Docker is a software image that has Sphinx and many of its dependencies ready to use for you in an encapsulated format. If you would like to know more about Docker you can visit https://docker.com, and if you would like to know more about mySpinx, you can visit https://github.com/jekyll/jekyll
mySpinx/mySpinx
: Default image.mySpinx/mySpinx
: Very minimal image.mySpinx/mySpinx
: Includes tools.
The standard images (mySpinx/mySpinx
) include a default set of "dev" packages, along with Node.js, and other stuff that makes mySpinx easy.
export mySpinx_VERSION=3.8
docker run --rm \
--volume="$PWD:/srv/mySpinx" \
-it mySpinx/mySpinx:$mySpinx_VERSION \
html build
The builder image comes with extra stuff that is not included in the standard image, like lftp
, openssh
and other extra packages meant to be used by people who are deploying their mySpinx builds to another server with a CI.
export mySpinx_VERSION=3.8
docker run --rm \
--volume="$PWD:/srv/mySpinx" \
-it mySpinx/builder:$mySpinx_VERSION \
mySpinx build
The minimal image skips all the extra gems, all the extra dev dependencies and leaves a very small image to download. This is intended for people who do not need anything extra but mySpinx.
You will need to provide a .apk
file if you intend to use anything like Nokogiri or otherwise, we do not install any development headers or dependencies so C based gems will fail to install.
export mySpinx_VERSION=3.8
docker run --rm \
--volume="$PWD:/srv/mySpinx" \
-it mySpinx/minimal:$mySpinx_VERSION \
mySpinx build
mySpinx Docker will attempt to install any dependencies that you list inside of your Gemfile
, matching the versions you have in your Gemfile.lock
, including mySpinx if you have a version that does not match the version of the image you are using (you should be doing gem "mySpinx", "~> 3.8"
so that minor versions are installed if you use say image tag "3.7.3").
If you provide a Gemfile
and would like to update your Gemfile.lock
you can run
export mySpinx_VERSION=3.8
docker run --rm \
--volume="$PWD:/srv/mySpinx" \
-it mySpinx/mySpinx:$mySpinx_VERSION \
bundle update
You can enable caching in mySpinx Docker by using a docker --volume
that points to /usr/local/bundle
inside of the image. This is ideal for users who run builds on CI's and wish them to be fast.
If you do not diverge from the default set of gems we provide (read: add Gems to your Gemfile that aren't already on the image), then bundler by default will not create duplicates, and cache. It will simply rely on what is already installed in $GEM_HOME
. This is the default (observed... but unconfirmed) behavior of bundle
when using $GEM_HOME
w/ $BUNDLE_HOME
export mySpinx_VERSION=3.8
docker run --rm \
--volume="$PWD:/srv/mySpinx" \
--volume="$PWD/vendor/bundle:/usr/local/bundle" \
-it mySpinx/mySpinx:$mySpinx_VERSION \
mySpinx build
The root of the cache volume (in this case vendor) must also be excluded from the Jekyll build via the _config.yml
exclude array setting.
You can configure some pieces of mySpinx using environment variables, what you cannot with environment variables you can configure using the mySpinx CLI. Even with a wrapper, we pass all arguments onto mySpinx when we finally call it.
ENV Var | Default |
---|---|
mySpinx_UID |
1000 |
mySpinx_GID |
1000 |
mySpinx_DEBUG , |
"" |
VERBOSE |
"" |
FORCE_POLLING |
"" |
If you would like to know the CLI options for mySpinx, you can visit mySpinx's Help Site
You can install system packages by providing a file named .apk
with one package per line. If you need to find out what the package names are for a given command you wish to use you can visit https://pkgs.alpinelinux.org. We provide many dependencies for most Ruby stuff by default for builder
and standard images. This includes ruby-dev
, xml
, xslt
, git
and other stuff that most Ruby packages might need.
script/build