Comment servir ce blog ?
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 Nginxblog-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 😉