I started using Docker for local development back in 2014. At the time, it was fairly rough around the edges, however the potential was clear!
Docker makes it possible to quickly and easily setup a consistent and portable development environment, putting the emphasis on writing code. It also helps facilitate a key aspect of the Twelve-Factory App methodology, specifically DEV / PRD parity.
Anyone that has maintained a local development environment will know that they can be prone to issue, especially if you use the machine for other workloads.
With Docker Community Edition installed, you can create an isolated development environment, without having to install and maintain any dependencies on your Mac. Not only does this dramatically simply the setup process, but it also helps guarantee the ongoing integrity of your development environment.
To get started with Jekyll, it is as simple as using the Official Jekyll Docker Image. You can obviously interact with the image by passing the required options every time you create a container, or alternatively you can use Docker Compose.
Simply create a file in the root of your Jekyll site called “docker-compose.yml” and include the following configuration:
jekyll: image: jekyll/jekyll:pages command: jekyll serve --watch --incremental ports: - 4000:4000 volumes: - .:/srv/jekyll
A description of the configuration can be found below:
jekyll/jekyll:pages states that you want to leverage the Jekyll image tagged with
pages. This is a specific image suited for hosting on GitHub Pages.
Command: specifies the command(s) to execute in the container. For example, the
jekyll serve command starts Jekyll’s development server. The options
--incremental inform Jekyll to automatically regenerate the site when a file is changed.
Ports: forwards port
4000 of the container to your local port
Volumes: maps the current directory
/srv/jekyll/, which is where the image is configured to look for your Jekyll site.
Once you have created the file, it is as simple as running the following Terminal command from the root of your Jekyll site:
The container will now run, with your specified configuration, resulting in a Jekyll server being created and available via “http://0.0.0.0:4000”.