docker-github-pages

docker-github-pages

:octocat: 🐳 Alpine Docker Image for GitHub Pages and Jekyll powered sites

Alpine Docker GitHub Pages

Alpine Docker image for running GitHub Pages / Jekyll projects. Only 70 MB.

What is GitHub Pages

GitHub Pages are public webpages hosted and published directly through your GitHub repository.

How to use this image

This image makes it easy to run your GitHub Pages page locally while developing – refreshing changes automatically as you make them. All you need to do is to mount your page in a volume under /usr/src/app like this:

$ docker run -it --rm -v "$PWD":/usr/src/app -p "4000:4000" starefossen/github-pages

Your Jekyll page will be available on http://localhost:4000.

Remember to add all the gems to your _config.yml file in order to get all the different things to work correctly:

repository: your/repo

gems:
- jekyll-github-metadata
- jekyll-mentions
- jekyll-redirect-from
- jekyll-sitemap
- jemoji

Also, in order for the {{ site.github }} metadata variables to be populated you need to set the JEKYLL_GITHUB_TOKEN environment variable with your GitHub token.

$ docker run \
  -t --rm \
  -v "$PWD":/usr/src/app \
  -e JEKYLL_GITHUB_TOKEN=my-github-token \
  -p "4000:4000" starefossen/github-pages

Docker compose

If you want to use Docker Compose instead, you can move a lot of the options into a docker-compose.yml at the root of your project:

version: '3'
services:
  jekyll:
    image: starefossen/github-pages
    environment:
      - "JEKYLL_GITHUB_TOKEN:${JEKYLL_GITHUB_TOKEN}"
    ports:
      - "4000:4000"
    volumes:
      - ./:/usr/src/app
    tty: true

Then start the container with docker-compose up.

Slow filesystem issues in Docker for Mac

When running this image in Docker for Mac you might experience slow page generation times. This is due to some limitations in the Docker for Mac filesystem integration. Changing the volume configuration to -v "$PWD":/usr/src/app:delegated will massively improve the page generation time, at the cost of delaying the generated files showing up in your host system slightly. In case you don't even need the generated pages on your host system, you can also exclude the _site/ folder completely from being mounted by adding a container-only volume: -v site:/usr/src/app/_site.

Image Variants

The starefossen/github-pages images come in two flavors, each designed for a specific use case.

starefossen/github-pages:<version>

This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.

starefossen/github-pages:onbuild

This image makes building derivative images easier. For most use cases, creating a Dockerfile in the base of your project directory with the line FROM starefossen/github-pages:onbuild will be enough to create a stand-alone image for your project.

License

This Docker image is licensed under the MIT License.

Software contained in this image is licensed under the following:

Supported Docker versions

This image is officially supported on Docker version v17.

Support for older versions (down to v1.0) is provided on a best-effort basis.

User Feedback

Documentation

Issues

If you have any problems with or questions about this image, please contact us through a GitHub issue.

Contributing

You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.

Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.