jekyll-docker
⛴ Docker images, and CI builders for Jekyll.
git clone https://github.com/envygeeks/jekyll-docker.gitenvygeeks/jekyll-dockerJekyll Docker
Docker images for running Jekyll with the
official Ruby image family and Docker Buildx Bake. The images keep the
long-standing /srv/jekyll workdir, expose Jekyll's default
development ports, and follow the official Ruby image
pattern of running as root by default.
Images
| Image | Purpose |
|---|---|
jekyll/jekyll |
Default image with Jekyll and common community gems. |
jekyll/jekyll:pages |
GitHub Pages-compatible image using versions from docker-bake.hcl. |
jekyll/builder and jekyll/minimal are archived and
no longer built or published. Their final release was
4.4.1; existing latest, 4, and 4.4 tags for those
images should be treated as aliases of that final release.
Usage
Build a site in the current directory:
docker run --rm \ --volume "$PWD:/srv/jekyll" \ jekyll/jekyll \ jekyll build
Serve a site locally:
docker run --rm \ --volume "$PWD:/srv/jekyll" \ --publish 4000:4000 \ --publish 35729:35729 \ jekyll/jekyll \ jekyll serve --host 0.0.0.0 --livereload
On Docker Desktop for Windows or other bind mount setups where host file changes do not trigger rebuilds, use Jekyll's polling watcher:
docker run --rm \ --volume "$PWD:/srv/jekyll" \ --publish 4000:4000 \ --publish 35729:35729 \ jekyll/jekyll \ jekyll serve --host 0.0.0.0 --livereload --force_polling
Run Bundler explicitly when your project has a Gemfile:
docker run --rm \ --volume "$PWD:/srv/jekyll" \ jekyll/jekyll \ bundle install docker run --rm \ --volume "$PWD:/srv/jekyll" \ jekyll/jekyll \ bundle exec jekyll build
For Linux bind mounts, use Docker's standard --user
flag when you want generated files to be owned by your
host user:
docker run --rm \ --user "$(id -u):$(id -g)" \ --volume "$PWD:/srv/jekyll" \ jekyll/jekyll \ jekyll build
For rootless Podman, do not pass Docker's --user
flag. Run the image as-is so Podman maps container root to
your host user:
podman run --rm \ --volume "$PWD:/srv/jekyll" \ docker.io/jekyll/jekyll \ jekyll build
Custom System Packages
The images do not install operating-system packages at runtime. Build a project-specific image when your site needs additional Debian packages:
FROM jekyll/jekyll RUN apt-get update \ && apt-get install -y --no-install-recommends graphviz \ && rm -rf /var/lib/apt/lists/*
The default image includes Node.js and pnpm. Corepack
package managers are configured per target in
docker-bake.hcl.
Local Development
Build every image target:
docker buildx bake
Build and load a single target locally:
docker buildx bake --load jekyll docker buildx bake --load pages
Run the smoke test suite:
script/test jekyll amd64 script/test pages amd64
Refresh GitHub Pages versions in docker-bake.hcl:
script/update
GitHub Pages Versions
script/update downloads
https://pages.github.com/versions.json
and updates the Pages-related Bake
variables:
PAGES_RUBY_VERSIONPAGES_JEKYLL_VERSIONGITHUB_PAGES_VERSION
more like this
gns3theme
Custom color themes for GNS3 GUI. Built-in schemes, custom JSON themes, device symbols. Supports Linux and macOS.