Microservices et réseau de projet
Faites communiquer les applications d’un même projet par leur nom, sans rien exposer publiquement.
Les microservices sur DockBoard, ce sont simplement plusieurs applications dans le même projet qui se parlent. Aucun registre de services à faire tourner, aucun mesh à configurer — le réseau de projet s’en charge.
Comment ça marche
Chaque projet possède un réseau Docker nommé dockboard_proj_<projectId>. Quand une application est déployée dans le projet :
- En mode local
- DockBoard crée le réseau s’il manque et y attache l’application.
- Sur un serveur distant
- L’agent crée le réseau et écrit un
docker-compose.override.ymlqui y attache chaque service de la stack. Rien à configurer à la main.
Dès lors, les applications du projet se résolvent mutuellement par nom de conteneur via le DNS interne de Docker.
Un exemple complet
Un front, une API et une base. Créez un projet, puis trois services dedans :
| Service | Ce que c’est | Adresse interne |
|---|---|---|
frontend | Application Next.js, port 3000 | dockboard-frontend:3000 |
api | Application NestJS, port 4000 | dockboard-api:4000 |
db | Base PostgreSQL | dockboard-db-db:5432 |
L’onglet Service Mesh vous donne ces chaînes prêtes à coller dans les variables d’environnement de chaque application :
# frontend
API_URL=http://dockboard-api:4000
# api
DATABASE_URL=postgres://user:password@dockboard-db-db:5432/dbN’attachez un domaine qu’à frontend. api et db restent internes — pas d’URL publique, pas de port exposé, rien à joindre depuis Internet.
Les deux limites
- Un seul projet
- Le réseau est limité au projet. Une application du projet A ne peut pas joindre celle du projet B par nom interne. Passez par l’URL publique HTTPS, ou mettez-les dans le même projet.
- Un seul hôte Docker
- Un réseau de projet est le bridge d’un seul serveur. Pour répartir une même application sur plusieurs machines, passez-la en cluster, qui lui donne un vrai réseau overlay. Pour faire dialoguer plusieurs applications d’un projet entre hôtes, regroupez-les sur un serveur ou exposez le service interne en HTTPS.