Deploiement avec Docker Compose
Cette methode deploie l'ensemble des services HCW@Home dans des conteneurs Docker. C'est l'approche recommandee pour le developpement, les tests et les environnements cloud.
Prerequis
- Docker Engine 20+ et Docker Compose v2
- 2 Go de RAM minimum
- Un nom de domaine (production) ou
localhost(developpement)
Architecture des services
graph TD
subgraph Services externes
LK[LiveKit - WebRTC SFU]
SMTP[Serveur SMTP]
SMS[Passerelle SMS - optionnel]
end
subgraph Reverse Proxy
NGINX[Nginx / Traefik / Caddy]
end
subgraph Frontends
PRACT[Practitioner :8080]
PAT[Patient :8081]
ADM[Admin :8082]
end
subgraph Backend
API[API :8000 - Django]
CEL[Celery Worker]
SCHED[Celery Beat]
MIG[Migrate]
end
subgraph Donnees
PG[(PostgreSQL :5432)]
RD[(Redis :6379)]
end
NGINX --> PRACT
NGINX --> PAT
NGINX --> ADM
PRACT --> API
PAT --> API
ADM --> API
API --> PG
API --> RD
API --> LK
CEL --> PG
CEL --> RD
CEL --> SMTP
CEL --> SMS
SCHED --> RD
MIG --> PG
Mise en place rapide
1. Recuperer le fichier docker-compose
2. Configurer l'environnement
Recuperer les images :
Adaptez ensuite les blocs environment: de docker-compose.yml a votre installation. Les services api, celery, scheduler et migrate doivent tous partager les memes reglages de base de donnees, de Redis et de cle secrete. Voir Variables d'environnement pour la reference complete.
Securite
Ne jamais utiliser les valeurs par defaut de DJANGOSECRET_KEY en production. Generez une cle avec : echo -n "votre phrase secrete" | sha256sum
3. Lancer les services
Au premier lancement, le service migrate applique automatiquement les migrations de base de donnees.
4. Creer un tenant
HCW@Home utilise le multi-tenancy avec isolation par schema PostgreSQL. Chaque tenant possede ses propres donnees, utilisateurs et configuration. Les tenants sont crees via le shell Django.
- schema name : localhost
- name : localhost
- domain : 127.0.0.1
Plusieurs tenants
Repetez ce processus pour chaque organisation. Chaque tenant est completement isole : utilisateurs, consultations, configuration et branding separes.
5. Charger les donnees de test (optionnel)
Cela cree des utilisateurs de test (mot de passe : Test1234). Voir le README pour la liste complete.
Services et ports
| Service | Port expose | Description |
|---|---|---|
| practitioner | 8080 | Interface praticien (Angular) |
| patient | 8081 | Interface patient (Ionic) |
| admin | 8082 | Interface d'administration Django |
| api | interne | API REST + WebSocket (Daphne) |
| celery | - | Worker pour les taches asynchrones |
| scheduler | - | Planificateur de taches (Celery Beat) |
| db | interne | PostgreSQL 15 |
| redis | interne | Redis 7 |
Volumes persistants
Les donnees sont stockees dans le dossier ./data/ :
| Chemin | Contenu |
|---|---|
./data/postgres_data/ |
Donnees PostgreSQL |
./data/redis_data/ |
Donnees Redis |