Aller au contenu

Déployer ActuaryLab (Dokploy) — doc incluse comme service

ActuaryLab se déploie en un seul stack Compose sur le VPS Dokploy. La documentation n'est pas un déploiement à part : c'est le service docs du même compose, géré au même titre que backend, frontend (et, à terme, minio, db).

Le service docs

Dans docker-compose.yml :

  docs:
    build:
      context: .
      dockerfile: docs/Dockerfile   # mkdocs build → nginx:alpine
    expose:
      - "80"
    restart: unless-stopped
    networks: [default, dokploy-network]

Modèle doc-as-service : à chaque push, Dokploy rebuild l'image docs ; mkdocs build tourne dans Docker ; nginx sert le site statique. Aucun artefact de build committé, aucun volume.

Sur Dokploy

  1. Projet Compose pointant sur le dépôt ActuaryLab, branche de prod, compose path docker-compose.yml.
  2. Onglet Environment : remplir les variables (cf. .env.production.example).
  3. Onglet Domains — une entrée par service exposé :
Service Hostname Port HTTPS
frontend app.quantis-actuarylab.nedcore.net 3000 letsencrypt
backend api.quantis-actuarylab.nedcore.net 8000 letsencrypt
docs docs.quantis-actuarylab.nedcore.net 80 letsencrypt
  1. Deploy. La doc est en ligne sur docs.quantis-actuarylab.nedcore.net en même temps que le reste du module.

Mettre à jour la doc

Workflow cible : on termine un travail → on met à jour les pages sous docs/ → on commit + push → Dokploy redéploie → la page web reflète la nouvelle doc. La doc suit ainsi le versionnage du code (même dépôt, même cycle de release).

Pièges (VPS partagé Dokploy)

  • dokploy-network externe : le service docs doit y être attaché (déjà dans le compose) sinon Traefik ne le voit pas → 502.
  • expose et non ports : pas de publication d'hôte ; Traefik route en interne. Un ports: provoquerait un conflit de port sur le VPS partagé.
  • Rebuild obligatoire après changement de doc : pas de volume monté — toute modif docs/** impose un nouveau Deploy (rebuild d'image), pas un simple restart.
  • DNS Traefik périmé après redeploy : 502 transitoire possible juste après un redéploiement, le temps que Traefik rafraîchisse l'IP du conteneur.

Versionner le portail (ultérieur)

Si un portail multi-versions devient nécessaire, MkDocs Material fournit mike (une version par sous-dossier + sélecteur), à baker dans l'image. Non nécessaire au démarrage : le service sert l'état courant de la branche déployée.