Docker – localhost de xamp (wamp) à host.docker.internal

Objectif

Monter un serveur AMP (Apache MySQL et PHP) avec docker.

Qu’est-ce que Docker ?

La meilleure définition de docker que j’ai trouvée à la fois simple et clair est celle-ci : « Logiciel open source permettant de créer, deployer des containers d’applications virtualisés sur un système d’exploitation. »

Problématique

Supposons que les bases de données ont déjà été créées avec xampp et que la taille de l’ensemble des fichiers de ces données fait plus de 2Go.

On a alors plusieurs solutions pour importer ces données :

  • un mysqldump dans xampp et un import de ce dump dans Docker.
  • Une copie de tous les dossiers dans C:\xampp\mysql\data sans oublier les fichiers ib_logfile* et ibdata1 de xampp vers le dossier de docker.

Je ne vais pas choisir ces 2 solutions.

Contournement du problème

Je vais garder les bases de données dans xampp. Je vais juste changer le nom de l’appel de localhost dans les scripts utilisés avec Docker à host.docker.internal.

Modifions le fichier hosts C:\windows\system32\drivers\etc\hosts et ajoutons la ligne avec l’adresse IP de sous-réseau

192.168.0.1    host.docker.internal

Ensuite à l’endroit où on fait appel à une connexion à la BDD depuis un script, on modifie en général localhost ou 127.0.0.1par host.docker.internal .

Et c’est tout. Il ne nous reste plus qu’à construire notre image si ce n’est pas déja fait

docker-compose build

et lancer (deployer)

docker-compose up -d

Ma contrainte restante – il faut lancer uniquement mysql dans xampp.