PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE


  • Présentation
  • Base de données et Docker: la question de la persistance
  • Installation pas à pas
  • 1. Installer Docker
  • 2. Désactivation temporaire du pare-feu (firewall)
  • 3. Création d'un volume local (répertoire sur l'hôte)
  • 4. Création et exécution du conteneur HFSQL
  • 5. Réactivation du pare-feu (firewalld)
  • 6. Interrogation du daemon docker
  • Accès au serveur HFSQL du conteneur
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
HFSQL et Docker
HFSQL Client/ServeurDisponible uniquement avec ce type de connexion
Présentation
Docker est un logiciel permettant d'exécuter des applications dans des conteneurs logiciels ("container") sous Linux (Docker s'exécute comme un daemon).
Chaque conteneur logiciel va pouvoir disposer de son propre environnement, ce qui simplifie les tests et le déploiement.
L'intérêt des conteneurs par rapport à la virtualisation est le suivant : certaines parties accèdent directement au serveur "hôte" (alors que la virtualisation crée une couche "complète" d'abstraction).
Il existe ensuite de nombreux outils complémentaires à Docker pour gérer la redondance, la scalabilité, etc.
Dans le cadre du développement d'une application, Docker permet d'isoler chaque module (la base de données, le serveur Web dédié aux Webservices et le serveur Web dédié aux sites). Ces différents modules peuvent ainsi s'exécuter sur un même serveur tout en étant cloisonnés les uns des autres.
Il est également possible de tester un conteneur et de le mettre ensuite en production dans des conditions identiques.
Notes :
  • Docker existe aussi sous Windows.
  • Cette aide n'a pas pour vocation d'expliquer le fonctionnement de Docker. Cependant, pour utiliser le conteneur Docker contenant le serveur HFSQL, il est nécessaire de maîtriser Docker et notamment il est nécessaire de :
    • savoir installer un nouveau conteneur à partir de l'image Docker du serveur HFSQL,
    • savoir gérer au moins un volume nécessaire à la persistance des données,
    • savoir gérer la configuration réseau à l'intérieur de Docker.
Base de données et Docker: la question de la persistance
À ses débuts, Docker a été conçu pour exécuter des applications "sans état" (stateless), c'est-à-dire sans données persistantes (les données sont uniquement temporaires et supprimées à l'arrêt du conteneur). Ce mode de fonctionnement ne serait pas très utile pour une base de données.
Depuis, Docker a évolué et permet l'utilisation de volumes de données qui sont associés à un conteneur (Docker Volume). Les données peuvent alors être :
  • dans un volume local à l'hôte Docker,
  • dans un volume sur SAN/NAS.
Dès lors, il est possible d'utiliser une base de données HFSQL dans un conteneur Docker en respectant ce découpage. On conserve ainsi l'intérêt de pouvoir changer le conteneur HFSQL (mise à jour, etc.) tout en conservant les données.
Installation pas à pas
Note : dans les paragraphes suivants, les lignes de commande illustrant les opérations sous Linux sont utilisables sous Ubuntu.

1. Installer Docker

Première étape, la plus simple : l'installation de Docker sur le serveur hôte.
sudo apt install docker.io

Attention: le nom de l'application est bien "docker.io" et non pas "docker".

2. Désactivation temporaire du pare-feu (firewall)

Les instructions correspondantes sont les suivantes :
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo reboot
Remarque : Cette désactivation temporaire peut être nécessaire pour éviter une erreur au lancement du conteneur Docker (provoque l'erreur: "Error response from daemon: driver failed programming external connectivity on endpoint HFSQL_DOCKER").

3. Création d'un volume local (répertoire sur l'hôte)

Pour que les données des fichiers de la base de données soient persistantes (on veut les conserver), il est préférable de ne pas stocker ces fichiers dans le conteneur. Pour cela, un dossier est créé (ou un montage pour un SAN/NAS) sur l'hôte. Dans l'exemple ci-dessous, il s'agit d'un dossier directement créé sur le stockage de l'hôte.
sudo mkdir /home/docker
sudo mkdir /home/docker/bdd_hfsql
sudo chmod -R 777 /home/docker
Important: dans cet exemple de ligne de commande, tous les droits sont donnés sur le répertoire. Il est bien entendu conseillé de restreindre le plus possible les droits de l'utilisateur exécutant le daemon docker.

4. Création et exécution du conteneur HFSQL

À cette étape, le daemon docker est installé et le volume de stockage est créé mais HFSQL n'a toujours pas été installé.
C'est en réalité Docker qui va "l'installer" à partir de son site de dépôt : il suffit d'indiquer à Docker la version à installer (l'ensemble des versions disponibles est présent dans l'onglet "Build Details" du dépôt "windev/hfsql" sur "hub.docker.com".
4.a. Installation "pour test"
À des fins de tests, il est possible d'utiliser les commandes "create" et "start" (la ligne de commande ci-dessous est passée à la ligne pour plus de lisibilité).
sudo docker create
--name HFSQL_DOCKER
--volume /home/docker/bdd_hfsql
 :/var/lib/hfsql
--publish 4923:4900
windev/hfsql:FR230053b
Dans cette ligne de commande, les paramètres sont les suivants :
  • "name": indique le nom du conteneur.
  • "volume" : indique le "binding" entre le volume et le répertoire défini dans le conteneur. Dans la configuration du serveur HFSQL, le chemin des bases de données sera vu comme "var/lib/hfsql".
  • "publish": indique le port d'accès au conteneur (4923 dans cet exemple) et la redirection vers le port à l'intérieur du conteneur (4900: le port standard de HFSQL).
  • le nom du paquet docker et la version HFSQL ("FR230053b" dans cet exemple).
Cette ligne de commande va provoquer le téléchargement de HFSQL Docker la première fois. Les informations suivantes seront affichées dans la console (le numéro de version peut changer) :
Unable to find image
"windev/hfsql:FR230053b" locally
FR230053b: Pulling from windev/hfsql
...
Il reste alors à démarrer l'exécution du conteneur par la commande "start" :
sudo docker start HFSQL_DOCKER
4.b. Installation "pour production"
Pour une installation "réelle", il est nécessaire d'utiliser la commande "run" de Docker.
sudo docker run -dit
--restart unless-stopped
--name HFSQL_DOCKER
--volume /home/docker/bdd_hfsql
 :/var/lib/hfsql
--publish 4923:4900
windev/hfsql:FR230053b
Dans cette ligne de commande, les paramètres sont identiques à ceux de la commande "create" avec en plus la commande de redémarrage.
Astuce : la commande suivante permet le lancement de Docker au boot de la machine :
sudo systemctl enable docker
Quelques remarques sur l'installation :
  • le port fourni au conteneur doit être libre sur le host.
  • le répertoire du host (ex : "/home/bob/bdd") doit exister et avoir les permissions nécessaires.
  • si le serveur doit être accessible depuis l'extérieur du host, le port doit être autorisé par le firewall du host.
  • seules les versions validées par notre service qualité sont publiées sur le dépôt Docker après des tests spécifiques. Il n'y a pas de pré-version ou autre.
Versions 24 et supérieures
Variables d’environnement : A la création du conteneur, si les bases n'existent pas, il est possible de définir des variables d'environnement, par exemple, via la syntaxe :
-e HFSQL_RANDOM_PASSWORD=yes
Il est possible d'utiliser une des trois variables suivantes (ou rien pour le mode par défaut "admin") :
  • HFSQL_PASSWORD : Mot de passe du compte initial.
  • HFSQL_PASSWORD_FILE : Chemin du fichier qui contient le mot de passe du compte initial.
  • HFSQL_RANDOM_PASSWORD : Le mot de passe du compte initial est généré aléatoirement. Il est affiché sur la sortie standard et peut être retrouvé dans les logs avec la commande :
    docker logs HFSQL_DOCKER
Il est également possible d'utiliser la variable suivante (facultatif) : HFSQL_USER : Nom du compte (admin par défaut).
Nouveauté 24
Variables d’environnement : A la création du conteneur, si les bases n'existent pas, il est possible de définir des variables d'environnement, par exemple, via la syntaxe :
-e HFSQL_RANDOM_PASSWORD=yes
Il est possible d'utiliser une des trois variables suivantes (ou rien pour le mode par défaut "admin") :
  • HFSQL_PASSWORD : Mot de passe du compte initial.
  • HFSQL_PASSWORD_FILE : Chemin du fichier qui contient le mot de passe du compte initial.
  • HFSQL_RANDOM_PASSWORD : Le mot de passe du compte initial est généré aléatoirement. Il est affiché sur la sortie standard et peut être retrouvé dans les logs avec la commande :
    docker logs HFSQL_DOCKER
Il est également possible d'utiliser la variable suivante (facultatif) : HFSQL_USER : Nom du compte (admin par défaut).
Variables d’environnement : A la création du conteneur, si les bases n'existent pas, il est possible de définir des variables d'environnement, par exemple, via la syntaxe :
-e HFSQL_RANDOM_PASSWORD=yes
Il est possible d'utiliser une des trois variables suivantes (ou rien pour le mode par défaut "admin") :
  • HFSQL_PASSWORD : Mot de passe du compte initial.
  • HFSQL_PASSWORD_FILE : Chemin du fichier qui contient le mot de passe du compte initial.
  • HFSQL_RANDOM_PASSWORD : Le mot de passe du compte initial est généré aléatoirement. Il est affiché sur la sortie standard et peut être retrouvé dans les logs avec la commande :
    docker logs HFSQL_DOCKER
Il est également possible d'utiliser la variable suivante (facultatif) : HFSQL_USER : Nom du compte (admin par défaut).

5. Réactivation du pare-feu (firewalld)

Bien entendu, lorsque l'installation est terminée, il est nécessaire de réactiver le pare-feu si celui-ci a été désactivé lors de l'étape 2.
sudo systemctl enable firewalld
sudo systemctl start firewalld

6. Interrogation du daemon docker

Il est possible de visualiser les conteneurs en cours d'exécution, d'arrêter un conteneur, etc. grâce à la commande "docker container". Par exemple, pour lister les conteneurs en cours d'exécution :
sudo docker container ls
Accès au serveur HFSQL du conteneur
Dès que le conteneur est en cours d'exécution, il est possible d'accéder au serveur HFSQL en indiquant :
  • le nom du serveur host pour le serveur,
  • le port associé au conteneur comme port pour HFSQL (dans cet article: 4923),
  • l'utilisateur et le mot de passe par défaut de HFSQL (pensez à les changer).
Note : pensez à vérifier que les bases de données créées sont bien dans le volume prévu et non dans le conteneur pour ne pas les perdre en cas d'arrêt ou de redémarrage du conteneur.
L'installation d'un conteneur Docker s'effectue par un "dépôt" : ne cherchez donc pas dans le répertoire de WINDEV pour en trouver l'installation.
Le conteneur Docker HFSQL est disponible à cette adresse : "https://hub.docker.com/r/windev/hfsql/".
Version minimum requise
  • Version 22
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire