Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here

docker

:ship: Docker images and builders for Jekyll.

Subscribe to updates I use docker


Statistics on docker

Number of watchers on Github 415
Number of open issues 3
Average time to close an issue 23 days
Main language Shell
Average time to merge a PR 3 days
Open pull requests 4+
Closed pull requests 14+
Last commit over 1 year ago
Repo Created over 4 years ago
Repo Last Updated over 1 year ago
Size 722 KB
Organization / Authorenvygeeks
Contributors9
Page Updated
Do you use docker? Leave a review!
View open issues (3)
View docker activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating docker for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Travis branch Donate Docker Stars Docker Pulls

Jekyll Docker

Jekyll Docker is a software image that has Jekyll and many of it dependencies ready to use for you in an encapsulated format. It includes a default set of gems, different image types with different extra packages, and wrappers to make Jekyll run more smoothly from start to finish for most Jekyll users. If you would like to know more about Docker you can visit https://docker.com, and if you would like to know more about Jekyll, you can visit https://github.com/jekyll/jekyll

Image Types

  • jekyll/jekyll: Default image.
  • jekyll/minimal: Very minimal image.
  • jekyll/builder: Includes tools.

Standard

The standard images (jekyll/jekyll) include a default set of dev packages, along with Node.js, and other stuff that makes Jekyll easy. It also includes a bunch of default gems that the community wishes us to maintain on the image.

Usage

export JEKYLL_VERSION=3.5
docker run --rm \
  --volume="$PWD:/srv/jekyll" \
  -it jekyll/jekyll:$JEKYLL_VERSION \
  jekyll build

Builder

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 Jekyll builds to another server with a CI.

Usage

export JEKYLL_VERSION=3.5
docker run --rm \
  --volume="$PWD:/srv/jekyll" \
  -it jekyll/builder:$JEKYLL_VERSION \
  jekyll build

Minimal

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 Jekyll.

Usage

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 JEKYLL_VERSION=3.5
docker run --rm \
  --volume="$PWD:/srv/jekyll" \
  -it jekyll/minimal:$JEKYLL_VERSION \
  jekyll build

Dependencies

Jekyll Docker will attempt to install any dependencies that you list inside of your Gemfile, matching the versions you have in your Gemfile.lock, including Jekyll if you have a version that does not match the version of the image you are using (you should be doing gem "jekyll", "~> 3.6" so that minor versions are installed if you use say image tag 3.5.

Updating

If you provide a Gemfile and would like to update your Gemfile.lock you can run

export JEKYLL_VERSION=3.5
docker run --rm \
  --volume="$PWD:/srv/jekyll" \
  -it jekyll/jekyll:$JEKYLL_VERSION \
  bundle update

Caching

You can enable caching in Jekyll 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.

My Gems Aren't Caching

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

Usage

export JEKYLL_VERSION=3.5
docker run --rm \
  --volume="$PWD:/srv/jekyll" \
  --volume="$PWD/vendor/bundle:/usr/local/bundle" \
  -it jekyll/jekyll:$JEKYLL_VERSION \
  jekyll build

Configuration

You can configure some pieces of Jekyll using environment variables, what you cannot with environment variables you can configure using the Jekyll CLI. Even with a wrapper, we pass all arguments onto Jekyll when we finally call it.

ENV Var Default
JEKYLL_UID 1000
JEKYLL_GID 1000
JEKYLL_DEBUG, ""
VERBOSE ""
FORCE_POLLING ""

If you would like to know the CLI options for Jekyll, you can visit Jekyll's Help Site

Packages

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.

Tools

You will find directions for using our image with various tools.

Docker-Compose

version: "3"
services:
  site:
    command: jekyll serve
    image: jekyll/jekyll:latest
    volumes:
      - $PWD:/srv/jekyll
      - $PWD/vendor/bundle:/usr/local/bundle
    ports:
      - 4000:4000
      - 35729:35729
      - 3000:3000
      -   80:4000

Usage

docker-compose run site jekyll new site
docker-compose run --service-ports site jekyll s
docker-compose run site bundle update
docker-compose run site jekyll b

LiveReload

This image supports jekyll-reload, all you need do is to configure it according to your needs.

Usage

export JEKYLL_VERSION=3.5
docker run --rm \
  --volume=$PWD:/srv/jekyll \
  -p 35729:35729 -p 4000:4000 \
  -it jekyll/builder:$JEKYLL_VERSION \
  jekyll build

Building Our Images

You can build our images or any specific tag of an image with bundle exec docker-template build or bundle exec docker-template build repo:tag, yes it's that simple to build our images; even if it looks complicated it's not.

Contributing

  • Fork the current repo; bundle install
  • opts.yml holds most of the versions, and gems.
  • Test your image manually script/debug will help you with that.
  • Ensure that your intended changes work as they're supposed to.
  • Ship a pull request if you wish to have it reviewed!
docker open issues Ask a question     (View All Issues)
  • almost 3 years how to change timezone
  • almost 3 years docker-template missing
  • almost 3 years permission denied
  • almost 3 years Build fails because docker-helper is not found.
  • almost 3 years Container fails to install github-pages dependencies: permission denied
  • almost 3 years Build fails (on MacOS)
  • about 3 years Container randomly fails with "permission denied" during find operation
  • about 3 years creation of custom image w/ jekyll-assets (and imagemagick apk)
  • over 4 years Build a Docker super image.
docker open pull requests (View All Pulls)
  • added rsync to the package list
  • Improve #151: updated Gemfiles backup
  • Fix 154: avoid ping
  • Enhancing README
docker questions on Stackoverflow (View All Questions)
  • Proper way to monitor PostgreSQL running inside a docker container
  • How to enable docker API to access via http
  • How to tunnel to into the private network of my docker containers on Bluemix?
  • howto: elastic beanstalk + deploy docker + graceful shutdown
  • How to handle docker API /images/create?
  • How to setup PyCharm for Docker inside Vagrant?
  • How to change VOLUME to COPY in Docker?
  • How to mitigate privilege escalation in Docker Containers to secure the host FS
  • How is "lxd" different from lxc/docker?
  • what actually this docker command means?
  • Docker routing/reverse proxy issue, can't curl other container
  • Write to /etc/hosts in docker container when running docker container
  • Ruby 2.2.4 on Openshift Online without Docker
  • Docker-machine ip in Dockerfile
  • Multiple docker images from SBT
  • Cannot connect to Postgres running in Docker from PGAdmin running on Windows Host
  • Creating a testing infrastructure with Pytest , Selenium Grid and Docker
  • Connection refused: PHPUnit selenium in Docker
  • remote access to a private docker-registry
  • Docker registry on marathon insecure-registry
  • Can we use Mattermost with Docker instead of Slack?
  • Can't expose a fuse based volume to a Docker container
  • Http2 protocol in an nginx reverse proxy and docker container
  • Error "Could not find rake-10.5.0 in any of the sources" on Phusion Passenger Docker image
  • Is posible define range of port to use in expose `-P` in docker?
  • Docker Base Images and Scaling Architecture
  • docker-compose 1.6 "args" attribute on "build"
  • Getting a docker container's ip address from the host
  • docker Job for docker.service failed because the control process exited with error code
  • How to set Docker ENTRYPOINT To NPM?
docker list of languages used
Other projects in Shell