Welcome to this blog’s first post, and how it started, by running jekyll inside a docker container.

It’s actually very easy to start your own blog with Jekyll using docker, but for first time users, sometimes things get complicated.

So let’s easy things up. I’ve created a base blog, with a template already in place that is based upon the same template used for this blog with some modifications to CSS and templating system to better serve the purpose of this blog.

So let’s start by Cloning this project

Clone with ssh (preferred mode)

git clone git@github.com:Ilhicas/jekyll-docker-base.git

Or use https

git clone https://github.com/Ilhicas/jekyll-docker-base.git

Now change directory to the folder jekyll-docker-base created after cloning

And just run:

docker-compose up -d

You can now check what’s going on after the image layer (from oficial jekyll docker hub repo) has downloaded and its up.

docker-compose logs -f

It should give an output similar to

Attaching to jekyldockerbase_blog_1
blog_1  | Fetching gem metadata from https://rubygems.org/.............
blog_1  | Fetching public_suffix 3.0.2
blog_1  | Installing public_suffix 3.0.2
blog_1  | Fetching addressable 2.5.2
blog_1  | Installing addressable 2.5.2

And can be stuck for a while in Attaching to jekyldockerbase_blog_1

And when done it should ouptut

blog_1  |             Source: /srv/jekyll
blog_1  |        Destination: /srv/jekyll/_site
blog_1  |  Incremental build: disabled. Enable with --incremental
blog_1  |       Generating...
blog_1  |                     done in 0.59 seconds.
blog_1  |  Auto-regeneration: enabled for '/srv/jekyll'
blog_1  |     Server address: http://0.0.0.0:4000/
blog_1  |   Server running... press ctrl-c to stop.

When satisfied press ctrl-c - this won’t actually stop as we are only running log output of docker container

Ok so now let’s navigate to http://localhost:4000

We should have something similar to this:

Writing your first post

For those who have never seen Jekyll before, it makes use of markdown and all posts (for simplicity here reside under _posts)

/blog/_posts/*.md

And must have the following structure

year-month-day-BLOG-TITLE.md

This is the minimum, if you wish to know more about date etc, go to jekyll posts

To get you started it comes with a first post that you should edit to try it out.

Don’t forget you must always use frontmatter.

For the first post this is the first part of the .md file, and uses yaml

    ---
    layout: post
    title: This is this blogs first post
    tags: [jekyll, docker]
    ---

If you wish to mess up with the css , Im using the amplify theme, so the css file to edit is under _includes/styles.scss

You can always change your posts templates under the /_layouts folder

And your header footer etc under /_includes

Making it your own

In order to make it your own, don’t forget to edit the ` _config.yml` so that you can change your settings, like google analytics by just setting the appropriate UID

And change the about.md to change the page containing your bio.

Do I need to restart docker for every change?

No, all changes made to assets and content, are always re-evaluated on the fly.

However changes made to _config.yml only get evaluated on startup.

So if you made any changes to _config.yml just reload the container. How?

docker-compose restart

And your changes should be visible.

Are you done with testing?

docker-compose down

And that’s it.

And that’s it for now.

Will post and link soon a Post telling you how to deploy easily, and generate SSL certificates soon, with the same simplicity as in this Post.

Thanks for reading.

André Ilhicas dos Santos

Devops Padawan, curious about systems automation, learning new languages, paradigms tools each day.

ilhicas ilhicas


Published