Déploiement local de Open BPMN avec 2 alternatives: Docker Compose ou Kubernetes.
Ce dépôt permet de lancer l'application Open BPMN en local avec:
- Docker Compose (le plus simple pour démarrer vite)
- Kubernetes (environnement plus proche de la prod)
- Utilise Docker Compose si tu veux démarrer en 1 commande.
- Utilise Kubernetes si tu veux déployer via manifests (
k8s/).
- Non, Kubernetes n'a pas besoin de Docker pour fonctionner.
- Kubernetes a besoin d'un runtime de conteneurs compatible CRI (souvent
containerdouCRI-O). - Oui dans certains setups locaux:
- Docker Desktop + Kubernetes: Docker Desktop est nécessaire.
- Minikube/k3d avec driver Docker: Docker est nécessaire comme moteur local.
- Non dans d'autres setups:
- Cluster managé (EKS/GKE/AKS) ou cluster bare-metal avec
containerd.
- Cluster managé (EKS/GKE/AKS) ou cluster bare-metal avec
- Git
- accès terminal
- port local
3000disponible
- Docker Desktop (macOS/Windows) ou Docker Engine (Linux)
- Docker Compose v2 (
docker compose)
Vérification:
docker --version
docker compose versionkubectl- cluster Kubernetes actif
- runtime de conteneurs déjà fourni par le cluster (généralement
containerd)
Vérification:
kubectl version --client
kubectl config get-contexts
kubectl config current-context
kubectl cluster-info- Python
>= 3.13 uv
Installer les dépendances Python du projet:
uv sync- Image: modèle immuable utilisé pour créer des conteneurs.
- Conteneur: instance en exécution d'une image.
- Registry: dépôt d'images (ex: Docker Hub).
- Port mapping: exposition d'un port conteneur vers l'hôte (ex:
3000:3000). - Volume: persistance des données hors cycle de vie du conteneur.
- Docker Compose: orchestration locale multi-services via YAML.
- Cluster: ensemble de nœuds pilotés par un plan de contrôle.
- Namespace: isolation logique des ressources (
open-bpmn). - Pod: plus petite unité déployable (1+ conteneurs).
- Deployment: gestion déclarative des pods (réplicas, rollout, restart).
- Service: point d'accès réseau stable vers les pods.
- Port-forward: tunnel local vers un Service/Pod sans exposition externe.
- Manifests YAML: définition déclarative de l'état désiré (
k8s/*.yaml).
- Ouvre un terminal dans le projet.
cd /Users/rgctechfi/Projects/bpmn- Vérifie que le port
3000n'est pas déjà pris.
lsof -i :3000- Choisis une seule méthode d'exécution à la fois:
- Docker Compose
- Kubernetes
- Si Kubernetes est choisi, confirme que le contexte est configuré (sinon erreur
localhost:8080 refused).
brew install --cask docker
open -a DockerAttends que Docker Desktop soit "running", puis:
docker --version
docker compose versionbrew install kubectl
kubectl version --clientPour Docker Desktop Kubernetes:
- Ouvre Docker Desktop
Settings > Kubernetes > Enable Kubernetes > Apply & Restart- Puis vérifie:
kubectl config get-contexts
kubectl config use-context docker-desktop
kubectl cluster-infodocker compose up -ddocker compose ps
docker compose logs --tail=100docker compose logs -fdocker compose restartdocker compose downdocker compose pull
docker compose up -dAccès application:
http://localhost:3000
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yamlkubectl -n open-bpmn rollout status deployment/modeler-app
kubectl -n open-bpmn get pods
kubectl -n open-bpmn get svckubectl -n open-bpmn port-forward svc/modeler-app 3000:3000Accès application:
http://localhost:3000
kubectl -n open-bpmn logs deployment/modeler-app --tail=100
kubectl -n open-bpmn logs deployment/modeler-app -fkubectl -n open-bpmn rollout restart deployment/modeler-app
kubectl -n open-bpmn rollout status deployment/modeler-appkubectl delete -f k8s/service.yaml
kubectl delete -f k8s/deployment.yaml
kubectl delete -f k8s/namespace.yamlDocker n'est pas installé ou n'est pas démarré.
brew install --cask docker
open -a DockerAucun contexte Kubernetes actif.
kubectl config get-contexts
kubectl config current-context
kubectl config use-context docker-desktop
kubectl cluster-infoLe port 3000 est déjà utilisé.
lsof -i :3000Puis change le port exposé:
- Docker Compose: modifier
docker-compose.yml(ex:3001:3000) - Kubernetes: utiliser un autre port local dans le
port-forward(ex:3001:3000)
.
├── README.md
├── docker-compose.yml
├── k8s/
│ ├── namespace.yaml
│ ├── deployment.yaml
│ └── service.yaml
├── ressources/
│ └── pictures/
│ └── ui.png
├── main.py
├── pyproject.toml
└── uv.lock
- Docker Compose:
docker-compose.yml - Kubernetes:
k8s/namespace.yaml,k8s/deployment.yaml,k8s/service.yaml - Dépendances Python:
pyproject.toml

