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 fichiersib_logfile*
etibdata1
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.1
par 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.