1. How to install testcontainers on Ubuntu wsl¶
1.1 Contexte¶
Pouvoir exécuter les tests unitaires de la couche DAO, qui utilisent le framework Testcontainers .
Ces tests, via Testcontainers, créent et utilisent des conteneurs Docker pour disposer d'une base de données PostgreSQL.
L'objectif est de permettre à Testcontainers de créer ces conteneurs dans une VM Ubuntu, préalablement créée sous WSL2.
1.2 Configuration de Docker et Testcontainers dans la VM Ubuntu sous WSL2¶
1.2.1 Se connecter à la VM Ubuntu WSL¶
Depuis un terminal Windows, ouvrir une connexion sur la VM Ubuntu WSL :
Se déplacer dans le dossier de l'utilisateur par défaut à l'aide de la commande suivante :
1.2.2 Récupérer les images Docker de base¶
Ces images sont nécessaires à la création des conteneurs utilisés par Testcontainers.
Récupérer l'image de base pour la BDD PostgreSQL :
Récupérer l'image utilitaire pour Testcontainers :
1.2.3 Modifier la configuration du service docker¶
Afin que TestContainers puisse communiquer avec docker, il a besoin que ce dernier écoute sur le port 2375.
Par conséquent, il faut modifier la configuration du service docker comme suit, en y ajoutant le bloc hosts :
{
"insecure-registries": [
"nexus-ext.2moro.fr:8088"
],
"hosts": [
"tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"
]
}
1.2.4 Modifier le service docker¶
Parallèlement, il faut aussi modifier le fichier qui gère le service docker :
Puis, modifier la ligne ExecStart comme suit :
1.2.5 Modifier la configuration de Testcontainers¶
Maintenant, la configuration de Testcontainers doit être modifiée afin qu'il sache comment contacter le service docker :
Info
Ce fichier $HOME/.testcontainers.properties peut ne pas exister. Avec la commande donnée ci-dessus en exemple, il sera automatiquement créé.
S'assurer que le contenu du fichier corresponde à ce qui suit :
docker.client.strategy = org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy
docker.host = tcp://localhost:2375
docker.cert.path = /home/<utilisateur>/.docker
ryuk.container.privileged = false
Remark
Dans le fichier ci-dessus, la chaine "<utilisateur>" est à remplacer par la valeur retournée par la commande suivante :
1.2.6 Redémarrer le service docker¶
Afin que toutes ces modifications soient bien prises en compte, il faut demander à systemd de recharger sa configuration, puis redémarrer le service docker :
Created: 2024-01-30