Aller au contenu principal

Faire tourner son propre blog avec Docusaurus et Docker

Prenez le contrôle total de votre blog Docusaurus auto-hébergé dans un container Docker. Un guide pas à pas : personnalisation du site, montage de volumes et gestion du contenu.

· 7 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Faire tourner son propre blog avec Docusaurus et Docker

⚡
TL;DR

Cet article de suivi montre comment personnaliser un blog Docusaurus dockerisé en copiant les fichiers clés (docusaurus.config.js, src, static) hors du container en cours d'exécution avec docker compose cp, puis en les montant comme volumes dans compose.yaml, de sorte que les modifications faites sur l'host soient reflétées en direct — titre du site, favicon, branding de la navbar, pages personnalisées et fichiers statiques.

Cet article reprend là où Exécuter Docusaurus avec Docker s'était arrêté. Lisez-le d'abord et créez les fichiers nécessaires.

Vous avez donc créé votre propre blog avec Docker et Docusaurus. En suivant les étapes expliquées dans l'article Exécuter Docusaurus avec Docker, vous disposez maintenant d'un blog dont la liste des articles est stockée sur votre machine, dans un dossier blog.

Allons plus loin.

Et quand votre blog est prêt à quitter votre machine, Encapsuler un site Docusaurus complet dans une image Docker l'empaquette pour la production, tandis que GitHub - Utiliser les Actions pour déployer ce blog le publie automatiquement à chaque push. Une fois en ligne, Comment auto-héberger Matomo vous dit qui le lit.

Dans l'article précédent, nous avons créé un dossier sur votre disque ; nous allons le réutiliser.

Lancez cd /tmp/docusaurus pour y entrer, puis ouvrez le dossier dans votre éditeur (de mon côté, je lance code .).

Dans Visual Studio Code, vous devriez voir ceci (sinon, relisez et exécutez les commandes du premier article) :

Point de départ dans vscode

Et en lançant docker compose up --detach --build pour démarrer le blog, vous obtiendrez cet écran :

http://localhost:3000

Blog au point de départ

Personnaliser le nom, le titre, les icônes et l'URL de votre site​

Pour l'instant, on voit My Site en haut à gauche de l'écran.

Il y a un fichier très important dans Docusaurus : docusaurus.config.js (https://docusaurus.io/docs/api/docusaurus-config).

Nous devons l'adapter à nos envies.

Il nous faut le fichier sur notre ordinateur

Ok, maintenant, un concept très important : nous devons garder sur notre ordinateur une copie de tout ce que nous voulons modifier.

Pour copier un fichier depuis notre container vers notre disque, la commande à utiliser est docker compose cp <service-name>:/file/path/within/container /host/path/to/copy/file/to

Donc, pour copier le fichier docusaurus.config.js sur votre disque, lancez docker compose cp blog:/app/docusaurus.config.js /tmp/docusaurus/docusaurus.config.js (remplacez /tmp/docusaurus par le nom du dossier où vous avez créé votre blog, sur votre disque dur).

Une fois la copie faite, vous retrouvez le fichier dans votre éditeur :

Docusaurus.config.js sur le disque local

Et la deuxième chose à faire pour pouvoir modifier le fichier et refléter les changements dans notre container Docker, c'est de monter le fichier.

Éditez votre fichier compose.yaml et ajoutez la ligne surlignée ci-dessous :

name: my_docusaurus_blog

services:
blog:
build: .
ports:
- 3000:3000
user: 1000:1000
volumes:
- ./blog:/app/blog
- ./docusaurus.config.js:/app/docusaurus.config.js

On y est presque : il faut recréer notre container, donc on relance docker compose up --detach.

En rafraîchissant la page web, on ne verra aucun changement mais... modifions maintenant le fichier docusaurus.config.js.

Ouvrez donc docusaurus.config.js et cherchez themeConfig, puis, à l'intérieur, le nœud navbar.

Vous trouverez quelque chose comme ceci :

La navbar dans config.js

Changez le texte comme vous voulez, par exemple :

navbar: {
title: 'Welcome world!',
logo: {
alt: 'It\'s a photo of me ... or not',
src: 'https://i.pravatar.cc/300',
},
}

Sauvez, rafraîchissez votre navigateur et vous obtenez :

http://localhost:3000

Ma propre navbar

Vous venez d'apprendre un concept très important !

Quand vous voulez pouvoir modifier un fichier présent dans un container, vous devez récupérer le fichier sur votre disque (1) puis synchroniser le fichier entre votre ordinateur et le container (2).

Pour la première étape, la commande à utiliser est docker compose cp suivie du nom du container (regardez votre fichier compose.yaml, c'est le nom du service), puis vous indiquez où le fichier est stocké dans le container et où le copier sur votre disque. C'est pour ça que nous avons utilisé docker compose cp blog:/app/docusaurus.config.js docusaurus.config.js.

La deuxième étape consiste à faire en sorte que les changements dans ce fichier copié soient reflétés entre votre host et le container : c'est pourquoi nous avons mis à jour la liste des volumes dans le fichier compose.yaml. Désormais, les changements faits sur votre disque ou par le container sont synchronisés des deux côtés.

Étape suivante, toujours dans le fichier docusaurus.config.js : cherchez title, favicon et url, puis renseignez vos propres valeurs, par exemple :

const config = {
title: 'MyBlog',
favicon: 'https://www.iconarchive.com/download/i75799/martz90/circle/android.ico',
url: 'https://yoursite.com',

// ...
};
http://localhost:3002/blog

Favicon

Un simple rafraîchissement suffit

Cette fois, pas besoin de relancer la commande docker up : appuyez simplement sur F5 pour voir vos changements directement dans le navigateur.

Lisez la documentation officielle

Vous pouvez faire bien plus en modifiant le fichier docusaurus.config.js ; référez-vous à la documentation officielle https://docusaurus.io/docs/api/docusaurus-config.

Le dossier src/pages​

Le dossier src/pages contient des fichiers comme index.md qui seront convertis en index.html (votre page d'accueil, donc). Vous pouvez aussi créer un fichier appelé tutorial.md (qui deviendra tutorial.html) et créer une entrée de menu dans votre barre de navigation avec /tutorial.html comme cible.

Vous devez copier le dossier du container vers votre host, comme vous l'avez déjà vu. Lancez la commande ci-dessous pour copier le dossier sur votre host :

>user@machine: ~/yourproject

Vous devez mettre à jour votre fichier compose.yaml et ajouter la ligne surlignée ci-dessous :

name: my_docusaurus_blog

services:
blog:
build: .
ports:
- 3000:3000
user: 1000:1000
volumes:
- ./blog:/app/blog
- ./docusaurus.config.js:/app/docusaurus.config.js
- ./src:/app/src

Le dossier static​

Ce dossier contient les fichiers qui seront copiés dans votre répertoire racine lors du déploiement de votre blog. C'est donc l'endroit parfait pour mettre, par exemple, un fichier .htaccess ou robots.txt.

Cas d'usage réel

De mon côté, j'utilise le dossier static pour stocker mes images communes (celles que j'utilise plusieurs fois). J'ai donc créé un dossier static/img sur mon blog. Ce dossier sera copié vers /img (directement sous la racine) sur mon serveur. Accéder aux images dans mes articles devient alors facile : la source ressemblera à /img/image_name.ext.

Lancez la commande ci-dessous pour copier le dossier sur votre host :

>user@machine: ~/yourproject

Et mettez à jour votre fichier compose.yaml comme ceci :

name: my_docusaurus_blog

services:
blog:
build: .
ports:
- 3000:3000
user: 1000:1000
volumes:
- ./blog:/app/blog
- ./docusaurus.config.js:/app/docusaurus.config.js
- ./src:/app/src
- ./static:/app/static

Vous avez maintenant les bases​

Poursuivez votre route, rendez-vous sur https://docusaurus.io/docs et lisez la documentation.

Trouvez aussi l'inspiration dans la Docusaurus Site Showcase : https://docusaurus.io/showcase.

Le clavier est à vous ! N'attendez pas, commencez à écrire votre blog dès maintenant !


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?