Déploiement Docker
DocPlatform est distribué sous forme d’image Docker multi-architecture (amd64/arm64) construite sur Alpine Linux.
Démarrage rapide
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
ghcr.io/valoryx-org/docplatform:latest
Ouvrez http://localhost:3000 et enregistrez votre compte administrateur.
Premier lancement
Au premier démarrage, DocPlatform effectue automatiquement :
- Création de la base de données SQLite dans
/data/data.db - Génération d’une clé de signature RS256 dans
/data/jwt-key.pem - Initialisation de l’index de recherche plein texte
- Début de l’écoute sur le port 3000
Le premier utilisateur à s’inscrire devient le Super Admin avec un accès complet à la plateforme. Aucune étape init manuelle n’est nécessaire — le conteneur est prêt à l’emploi immédiatement.
# Vérifier que le conteneur a démarré correctement
docker logs docplatform
# → INFO Server starting port=3000 version=v0.5.2
# → INFO Database initialized path=/data/data.db
# → INFO Search index ready documents=0
# → INFO Listening on http://0.0.0.0:3000
Docker Compose
Pour une gestion plus simple, utilisez Docker Compose :
# docker-compose.yml
services:
docplatform:
image: ghcr.io/valoryx-org/docplatform:latest
container_name: docplatform
ports:
- "3000:3000"
volumes:
- docplatform-data:/data
- ./deploy_key:/etc/docplatform/deploy_key:ro
environment:
- DATA_DIR=/data
- PORT=3000
- GIT_SSH_KEY_PATH=/etc/docplatform/deploy_key
- BACKUP_RETENTION_DAYS=30
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
volumes:
docplatform-data:
docker compose up -d
Détails de l’image
| Propriété | Valeur |
|---|---|
| Registre | ghcr.io/valoryx-org/docplatform |
| Image de base | Alpine Linux 3.19 |
| Architectures | linux/amd64, linux/arm64 |
| Taille | ~120 Mo compressé |
| Utilisateur | Non-root (docplatform, UID 1000) |
| Port exposé | 3000 |
| Répertoire de données | /data |
Tags
| Tag | Description |
|---|---|
latest |
Version stable la plus récente |
v0.5.2 |
Version spécifique |
v0.5 |
Dernier patch pour v0.5.x |
Volumes
Montez un volume persistant dans /data pour préserver les données entre les redémarrages du conteneur :
-v docplatform-data:/data
Le répertoire /data contient :
/data/
├── data.db # SQLite database
├── jwt-key.pem # Auto-generated RS256 signing key
├── backups/ # Daily backup files
└── workspaces/
└── {workspace-id}/
├── docs/ # Markdown files
├── .git/ # Git repository (if connected)
└── .docplatform/
└── config.yaml
Ne sautez pas le montage de volume. Sans lui, toutes les données sont perdues lorsque le conteneur est supprimé.
Variables d’environnement
Passez la configuration via les flags -e, --env-file ou la section environment de Docker Compose :
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
-e DATA_DIR=/data \
-e SMTP_HOST=smtp.example.com \
-e SMTP_PORT=587 \
-e SMTP_FROM=[email protected] \
-e SMTP_USERNAME=[email protected] \
-e SMTP_PASSWORD=app-password \
-e OIDC_GOOGLE_CLIENT_ID=your-client-id \
-e OIDC_GOOGLE_CLIENT_SECRET=your-client-secret \
ghcr.io/valoryx-org/docplatform:latest
Ou utilisez un fichier env :
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
--env-file .env.production \
ghcr.io/valoryx-org/docplatform:latest
Consultez Variables d’environnement pour la référence complète.
Clé SSH pour la synchronisation git
Montez votre clé de déploiement en tant que volume en lecture seule :
-v /path/to/deploy_key:/etc/docplatform/deploy_key:ro
-e GIT_SSH_KEY_PATH=/etc/docplatform/deploy_key
Assurez-vous que le fichier de clé a les permissions correctes sur l’hôte :
chmod 600 /path/to/deploy_key
Vérifications de santé
DocPlatform expose des endpoints de santé :
| Endpoint | Objectif |
|---|---|
GET /health |
Vérification de vivacité de base (le serveur fonctionne) |
GET /ready |
Vérification de disponibilité (la base de données et la recherche sont initialisées) |
Utilisez-les pour les healthchecks Docker, les sondes de load balancer ou les sondes de vivacité/disponibilité d’orchestrateur.
# Vérification rapide de vivacité
curl -f http://localhost:3000/health
# → {"status":"ok"}
# Vérification de disponibilité (base de données + recherche initialisées)
curl -f http://localhost:3000/ready
# → {"status":"ok","database":"ok","search":"ok"}
Avec un reverse proxy
Caddy + Docker Compose
services:
docplatform:
image: ghcr.io/valoryx-org/docplatform:latest
volumes:
- docplatform-data:/data
environment:
- DATA_DIR=/data
- HOST=0.0.0.0
restart: unless-stopped
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
restart: unless-stopped
volumes:
docplatform-data:
caddy-data:
caddy-config:
# Caddyfile
docs.yourcompany.com {
reverse_proxy docplatform:3000
}
Caddy gère automatiquement le TLS via Let’s Encrypt.
Mises à jour
# Télécharger la dernière image
docker pull ghcr.io/valoryx-org/docplatform:latest
# Recréer le conteneur
docker compose up -d
Ou avec Docker standard :
docker pull ghcr.io/valoryx-org/docplatform:latest
docker stop docplatform
docker rm docplatform
docker run -d \
--name docplatform \
-p 3000:3000 \
-v docplatform-data:/data \
ghcr.io/valoryx-org/docplatform:latest
Les données dans le volume persistent entre les recréations de conteneur.
Compilation depuis les sources
Compilez votre propre image depuis le Dockerfile :
cd Phase05/src
docker build -t docplatform:custom .
Le Dockerfile utilise une compilation multi-étapes :
- Étape de compilation — Compilation Go avec CGO désactivé
- Étape frontend — Export statique Next.js
- Étape d’exécution — Alpine Linux avec le binaire compilé et les assets statiques
Journaux
# Suivre les journaux du conteneur
docker logs -f docplatform
# 100 dernières lignes
docker logs --tail 100 docplatform
Les journaux sont structurés en JSON avec des identifiants de requête pour l’observabilité.
Sauvegarde et restauration
Sauvegarde manuelle
# Copier la base de données depuis le conteneur
docker cp docplatform:/data/data.db ./backup-$(date +%Y%m%d).db
Sauvegardes automatisées
Les sauvegardes quotidiennes s’exécutent automatiquement à l’intérieur du conteneur (activées par défaut). Elles sont stockées dans /data/backups/ et incluses dans le volume.
Restauration
docker stop docplatform
docker cp ./backup-20250115.db docplatform:/data/data.db
docker start docplatform