Files
jb-compta/docs/deploiement.md
T

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'entrypoint applique 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é)

  1. Pousse le dossier du projet dans un dépôt Git (GitHub privé, ou Gitea auto-hébergé).
  2. Portainer → Stacks → Add stack → Repository.
  3. Renseigne l'URL du dépôt, la branche, et docker-compose.yml comme Compose path.
  4. Environment variables : ajoute les valeurs (cf. .env.example).
  5. 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)

  1. Copie le projet sur l'hôte Docker (WinSCP/scp), ex. /opt/jb-compta.
  2. En SSH : cd /opt/jb-compta && docker build -t jb-compta:latest .
  3. Dans docker-compose.yml, commente build: . et décommente image: jb-compta:latest.
  4. 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

  1. Mets à jour le code (Git pull ou nouvelle image).
  2. Dans Portainer : Stacks → jb-compta → Update / Re-pull and redeploy.
  3. 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=0 en production.
  • Renseigne DJANGO_ALLOWED_HOSTS et DJANGO_CSRF_TRUSTED_ORIGINS avec ton IP/domaine.
  • Place l'app derrière un reverse proxy HTTPS (Nginx Proxy Manager, Traefik…) si tu l'exposes.