Gérer plusieurs serveurs HFSQL C/S en Docker avec Traefik

3 min de lecture
Rédigé par Laurent Glesner - Consultant chez EloNeva
infrastructure
Gérer plusieurs serveurs HFSQL C/S en Docker avec Traefik

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

  1. 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.
  2. HFSQL Dev & Prod
    • Deux instances HFSQL sont créées, chacune exposant un port distinct ( 4901 et 4902).
    • Chaque instance est déclarée avec des labels Traefik afin que le proxy puisse les router correctement.

5. Démarrage des services

Lancez le tout avec :

bash
docker-compose up -d

Pour voir les logs :

bash
docker-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

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.

7. Liens externes