Everyday I use docker not only as a tool to ship software in isolated containers but also as a tool for local development. It allows me to play aground with stuff but keep my machine clean at the same time. A little over a year ago I started using docker for my local Microsoft SQL Server. Ever since then I find more and more use for it. The latest utilization of docker in that fashion and a good representation that I want to share is the maintenance of my Jekyll-homepage.
Why use docker for Jekyll
Jekyll is a Ruby tool and as such you would have to install a full Ruby development environment. Since I do not need Ruby for anything else at the moment I want to keep my system clean of it. See here on how to setup docker-for-windows.
I use docker-compose to handle the container. The following
docker-compose.yml file configures everything needed.
version: '3' services: jekyll: image: jekyll/jekyll:latest command: jekyll serve --watch --force_polling --verbose ports: - 4000:4000 volumes: - .:/srv/jekyll
- defines one service called
- uses the Jekyll docker image
- command to start Jekyll
- map from local port 4000 to contaner port 4000
- map from current local folder (
.) to container working folder (
/srv/jekyll- it’s a Linux container)
Make sure to have docker configured to
Create a new homepage
docker-compose.yml file in an empty folder and run
docker-compose run jekyll /bin/bash from the command line. This will download the Jekyll docker image, start the container and tunnel the Linux bash of the container to the command line. You can now enter Linux commands that are executed within the docker container.
jekyll new . --force in the bash to setup a new homepage. (
--force is needed because Jekyll prefers empty folders, but we do already have the
docker-compose.yml file in the folder.)
Notice that the docker-container folder is mapped to our local folder via the
volumes option in the
jekyll new . --force is finished all necessary Jekyll files for a new blog have been added to the folder. Not only in the Linux container but also in our host Windows folder.
Now the homepage can be served.
Serve the homepage
docker-compose up from the command line. That will start the docker-container and run Jekyll. Folders and ports are mapped and the homepage can be browsed under