Je voulais quelque chose de simple pour éviter de perdre du temps à configurer et customiser ce blog. J’ai juste à me concentrer sur l’écriture de nouvelles choses à partager 🙂

Le backend est un simple docker compose avec 2 services:

  • blog pour servir le contenu statique avec Nginx
  • blog-build qui agit comme un conteneur “sidecar” surveille constamment les mises à jour dans le répertoire blog/ et génère le contenu statique.

Voici le contenu du fichier docker-compose.yml :

version: "3.9"

services:
  blog:
    container_name: blog
    image: nginx
    volumes:
      - /srv/docker-compose/blog/_site/:/var/www/html
      - /srv/docker-compose/nginx.conf.template:/etc/nginx/templates/nginx.conf.template
    ports:
     - "8001:8001"
    environment:
      NGINX_HOST: blog.ralex.fr
      NGINX_PORT: 8001
    restart: always

  blog-build:
    container_name: blog-build
    image: jekyll/jekyll:latest
    entrypoint: jekyll
    command: build --watch --incremental
    environment:
      JEKYLL_ROOTLESS: 1 
    volumes:
      - /srv/docker-compose/blog:/srv/jekyll
    restart: always

Une fonctionnalité particulière de l’image docker officielle Nginx est utilisée pour customiser le hostname and le port avec le fichier nginx.conf.template:

server {
    listen       ${NGINX_PORT};
    server_name  ${NGINX_HOST};
    root /var/www/html;

    location / {
        try_files $uri $uri/ $uri.html =404;
    }
}

Vous pouvez en apprendre plus à ce sujet ici.

Toute modification dans le fichier _config.yml nécessitera un redémarrage avec:

docker-compose restart blog-build

Mais tout ajout au dossier _posts/ sera automatiquement publié. Cela peut être une bonne idée de mettre published: false dans les entêtes d’un nouvel article tant qu’il n’est pas encore prêt pour une lecture publique.

Une autre façon de faire est de mettre une date dans el futur dans l’entête de l’article.

Vous verez alors ce genre de message dans les logs tant que l’article ne sera pas prêt à être publié :

Skipping: _posts/2023-12-21-how-to-serve-this-blog.md has a future date

Ensuite, c’est à vous de voir si vous souhaitez versionner le code avec Git ou tout du moins, le sauvegarder régulièrement 😉