Dans ce repo, j'utilise MkDocs et Docker pour mettre en place une documentation avec le strict minimum !
MkDocs est un excellent moyen pour produire rapidement de la documentation.
Sans trop rentrer dans les détails, c'est un générateur de site statique en Python. On écrit la documentation en MarkDown et la configuration tient dans un fichier YAML.
# On télécharge la dernière image
FROM squidfunk/mkdocs-material:latest
# Soit on installe les extensions 1 par 1 directement ici...
RUN pip install mkdocs-mermaid2-plugin
# ...soit on installe les extensions via un fichier requirements.txt.
ADD requirements.txt .
RUN pip install --upgrade pip && pip install -r requirements.txt
Si c'est l'option retenue, c'est là que doivent être ajoutées les extensions nécessaires (avec éventuellement la version pour éviter les surprises):
mkdocs-mermaid2-plugin==1.1.1
...C'est l'unique fichier de configuration ! Version commentée en français ici
Au minimum, il faut ça:
site_name: Ma super doc !
theme:
name: 'material'C'est le répertoire qui va accueillir les fichiers de la documentation.
Par défaut, c'est dans le dossier docs mais comme toujours, on peut modifier ça...
Deux options sont possibles pour lire la documentation...
C'est la solution rapide et pratique car on peut voir les changements en temps réel mais c'est déconseillé de lancer le site en production de cette manière !
A la racine du projet, voici la ligne qu'il faut lancer:
docker run --rm -it -p 8000:8000 -v ${PWD}:/docs squidfunk/mkdocs-material
Les options de base:
docker runva pull l'image et démarrer le container. C'est la base !--rmindique que le container sera supprimé lorsqu'il ne sera arrêté-itpour les modes interactif et TTY-p 8080:8000pour rediriger ou pas sur un autre port (sortie:entrée). Car le port sera8000par défaut-v ...pour lier le volumesquidfunk/mkdocs-materialpour indiquer l'image
On peut aussi ajouter:
-dpour le mode détaché (le container tourne même si on ferme le terminal)--restart alwayspour permettre au container de se relancer automatiquement si besoin. Mais pas compatible avec--rm, il faudra faire un choix !--name 'mkdocs'pour personnaliser le nom du container (quand on fait un docker ps, par exemple)serve -a 0.0.0.0:1234(à la suite de l'image) pour personnaliser le port
Pour la doc officielle, c'est par ici
A la différence de la ligne précédente, cette ligne va uniquement générer la version "statique" du site dans le dossier... /site.
Le contenu de ce dossier devra être copié sur le serveur de prod. Soit de manière "artisanale" (scp, ftp, sftp,...), soit de manière automatique (GitHub Pages, par exemple)
docker run --rm -it -v ${PWD}:/docs squidfunk/mkdocs-material build
.
├── Dockerfile
├── docs
│ └── index.md
├── mkdocs.yml
├── README.md
├── requirements.txt
└── site
├── 404.html
├── assets
│ ├── images
│ │ └── favicon.png
│ ├── javascripts
│ │ ├── bundle.8fd75fb4.min.js
│ │ ├── bundle.8fd75fb4.min.js.map
│ │ ├── lunr
│ │ │ ├── min
│ │ │ │ ├── lunr.ar.min.js
│ │ │ │ │ ...
│ │ │ │ └── lunr.zh.min.js
│ │ │ ├── tinyseg.js
│ │ │ └── wordcut.js
│ │ └── workers
│ │ ├── search.b8dbb3d2.min.js
│ │ └── search.b8dbb3d2.min.js.map
│ └── stylesheets
│ ├── main.f2e4d321.min.css
│ ├── main.f2e4d321.min.css.map
│ ├── palette.06af60db.min.css
│ └── palette.06af60db.min.css.map
├── index.html
├── search
│ └── search_index.json
├── sitemap.xml
└── sitemap.xml.gz
Et voilà !
