Introduction
Lorsque vous travaillez avec PC Soft et ses outils de développement (Windev, Webdev, WinDev Mobile), il est fréquent d’avoir besoin de plusieurs instances HFSQL Client/serveur pour différents projets ou environnements (développement, test, production, version 2024, version 2025).
Dans un contexte Docker, il est possible de déployer plusieurs instances HFSQL C/S sur un même serveur Linux tout en les gérant efficacement avec Traefik.
Dans cet article, nous allons voir comment configurer Docker, Traefik, et HFSQL C/S pour une gestion centralisée et flexible.
1. Pré-requis
Avant de commencer, assurez-vous d’avoir :
- Un serveur Linux (Ubuntu/Debian ou autre) avec Docker et Docker Compose installés.
- Une configuration réseau correcte pour gérer les ports HFSQL.
- Une compréhension de Traefik en tant que reverse proxy.
- Les binaires HFSQL Server compatibles Docker.
2. Structure de l’architecture
Nous allons créer une infrastructure permettant de :
- Lancer plusieurs instances HFSQL dans des containers Docker distincts.
- Accéder à chaque instance via des noms de domaine spécifiques (ex :
hfsql-dev.mondomaine.com
,hfsql-prod.mondomaine.com
). - Gérer la connexion sécurisée et le routage intelligent via Traefik.
3. Configuration de Docker Compose
Nous allons commencer par créer un fichier docker-compose.yml
qui définit :
- Traefik comme reverse proxy.
- Plusieurs instances HFSQL exposées sur des ports distincts.
Fichier docker-compose.yml
version: '3.8'
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: always
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.hfsql.address=:4900"
ports:
- "80:80"
- "8080:8080" # Interface de Traefik
- "4900-4910:4900-4910" # Plage de ports pour HFSQL
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
networks:
- hfsql_network
hfsql_dev:
image: hfsql-server:latest
container_name: hfsql_dev
restart: always
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.hfsql-dev.rule=HostSNI(`*`)"
- "traefik.tcp.routers.hfsql-dev.entrypoints=hfsql"
- "traefik.tcp.services.hfsql-dev.loadbalancer.server.port=4901"
networks:
- hfsql_network
expose:
- "4901"
hfsql_prod:
image: hfsql-server:latest
container_name: hfsql_prod
restart: always
labels:
- "traefik.enable=true"
- "traefik.tcp.routers.hfsql-prod.rule=HostSNI(`*`)"
- "traefik.tcp.routers.hfsql-prod.entrypoints=hfsql"
- "traefik.tcp.services.hfsql-prod.loadbalancer.server.port=4902"
networks:
- hfsql_network
expose:
- "4902"
networks:
hfsql_network:
driver: bridge
4. Explication de la configuration
- Traefik
- Il écoute sur le port 80 pour le routage HTTP et 4900-4910 pour les connexions TCP HFSQL.
- Il utilise Docker comme provider pour détecter automatiquement les services.
- Il expose une interface de gestion sur port 8080.
- HFSQL Dev & Prod
- Deux instances HFSQL sont créées, chacune exposant un port distinct (
4901
et4902
). - Chaque instance est déclarée avec des labels Traefik afin que le proxy puisse les router correctement.
- Deux instances HFSQL sont créées, chacune exposant un port distinct (
5. Démarrage des services
Lancez le tout avec :
bashdocker-compose up -d
Pour voir les logs :
bashdocker-compose logs -f
Vérification
- Interface Traefik :
http://votre-serveur:8080
- Connexion aux bases HFSQL via un client HFSQL :
- Serveur 1 (dev) :
votre-serveur:4901
- Serveur 2 (prod) :
votre-serveur:4902
- Serveur 1 (dev) :
6. Conclusion
Grâce à Docker et Traefik, il est possible de :
✅ Lancer plusieurs instances HFSQL sur un même serveur
✅ Gérer le routage des connexions avec Traefik
✅ Facilement scaler et ajouter de nouvelles instances
✅ Sécuriser l’accès avec SSL
✅ Superviser les instances avec Portainer
Cette approche est flexible et modulaire, idéale pour des environnements multi-projets et multi-clients.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.