3.2 KiB
Déploiement (Portainer) & maintenance
Principe
- Le conteneur ne contient que l'application (Gunicorn). Il est sans état.
- La base PostgreSQL est externe (la tienne). Aucune donnée n'est stockée dans le conteneur.
- Au démarrage, l'
entrypointapplique les migrations, crée le compte admin (si variables fournies), charge éventuellement les données d'exemple, puis lance Gunicorn.
Préparer PostgreSQL
Sur ton serveur PostgreSQL existant :
CREATE DATABASE compta;
CREATE USER jb WITH PASSWORD 'ton_mot_de_passe';
GRANT ALL PRIVILEGES ON DATABASE compta TO jb;
-- PostgreSQL 15+ : donner aussi les droits sur le schéma public
\c compta
GRANT ALL ON SCHEMA public TO jb;
Vérifie que le serveur accepte les connexions depuis l'hôte Docker
(listen_addresses dans postgresql.conf et une ligne dans pg_hba.conf).
Important : le contexte de build
COPY . . dans le Dockerfile copie le contexte de build (les fichiers fournis à Docker).
L'éditeur web de Portainer ne fournit que le docker-compose comme contexte : tes dossiers
config/ et compta/ sont absents, et le build échoue avec No module named 'config'.
Il faut donc fournir le projet complet par l'une des deux méthodes ci-dessous.
Option A — dépôt Git (recommandé)
- Pousse le dossier du projet dans un dépôt Git (GitHub privé, ou Gitea auto-hébergé).
- Portainer → Stacks → Add stack → Repository.
- Renseigne l'URL du dépôt, la branche, et
docker-compose.ymlcomme Compose path. - Environment variables : ajoute les valeurs (cf.
.env.example). - Deploy the stack. Portainer clone le dépôt → contexte complet →
build: .fonctionne.
Mise à jour : git push, puis dans Portainer Pull and redeploy.
Option B — image pré-construite sur l'hôte (sans Git)
- Copie le projet sur l'hôte Docker (WinSCP/scp), ex.
/opt/jb-compta. - En SSH :
cd /opt/jb-compta && docker build -t jb-compta:latest . - Dans
docker-compose.yml, commentebuild: .et décommenteimage: jb-compta:latest. - Portainer → Stacks → Add stack → Web editor, colle le compose, renseigne les variables, déploie.
Mise à jour : re-copier les fichiers, docker build à nouveau, puis redéployer la stack.
Premier démarrage
Mets SEED_DEMO=1 pour charger les barèmes 2026 et un jeu d'exemple,
puis repasse à 0 et redéploie.
Accès
- Admin / saisie :
http://IP:8001/admin/ - Tableau de bord :
http://IP:8001/dashboard/
Change le port 8001 dans le compose si besoin.
Mettre à jour l'application
- Mets à jour le code (Git pull ou nouvelle image).
- Dans Portainer : Stacks → jb-compta → Update / Re-pull and redeploy.
- Les migrations éventuelles s'appliquent automatiquement au redémarrage.
Sauvegarde
Sauvegarde uniquement la base PostgreSQL (le conteneur n'a rien à sauvegarder) :
pg_dump -h IP_DB -U jb compta > sauvegarde_compta_$(date +%F).sql
Sécurité
- Génère un vrai
DJANGO_SECRET_KEY(longue chaîne aléatoire). DJANGO_DEBUG=0en production.- Renseigne
DJANGO_ALLOWED_HOSTSetDJANGO_CSRF_TRUSTED_ORIGINSavec ton IP/domaine. - Place l'app derrière un reverse proxy HTTPS (Nginx Proxy Manager, Traefik…) si tu l'exposes.