Files
cv-maker/DOCKER_HUB_OVERVIEW.md
T

2.3 KiB

CV-Maker

Application web de création de CV en temps réel : saisie Markdown dans un panneau latéral, preview A4 instantanée, sauvegarde locale automatique et export PDF — le tout sans backend, 100 % côté navigateur.

Démarrage rapide

docker run -d -p 3000:3000 --name cv-maker <mon-user-dockerhub>/cv-maker:latest
# → http://localhost:3000

Avec Docker Compose :

services:
  cv-maker:
    image: <mon-user-dockerhub>/cv-maker:latest
    container_name: cv-maker
    restart: unless-stopped
    ports:
      - "3000:3000"
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s

Fonctionnalités

  • Édition Markdown en direct (6 zones + expériences professionnelles)
  • Preview A4 instantanée au format d'impression
  • Export PDF et export/import JSON (cv-maker.json) pour partager un CV
  • Sauvegarde automatique dans le localStorage du navigateur — aucune donnée transmise, aucun volume requis
  • PWA installable : utilisable hors-ligne (sw.js, manifest, icônes 192/512)
  • Rendu Markdown sécurisé (marked + DOMPurify, anti-XSS)

Détails de l'image

Caractéristique Valeur
Base node:20-alpine
Port exposé 3000
Variables d'environnement HOSTNAME=0.0.0.0, PORT=3000, NODE_ENV=production
Schéma Multi-stage (deps → builder → runner), sortie Next.js standalone
Volume persistant Aucun — données dans le navigateur (localStorage)
Commit node comme utilisateur non-root (Next.js standalone)

Tags

Tag Usage
latest Dernière version stable — déploiements courants
<semver> (ex. 1.0.0) Version précise — retours arrière

Réduire / personnaliser

  • Port : laisser le conteneur sur 3000, mapper le port hôte librement (-p 8080:3000).
  • HTTP : image se servant elle-même (pas de serveur externe requis), adaptée derrière un reverse-proxy (Caddy/Nginx).

Sources

  • Dockerfile, configuration et documentation technique : dépôt du projet
  • Toute donnée saisie reste dans le navigateur — conforme aux exigences de confidentialité (aucun cookie, aucune télémesure)