Utiliser Docker pour son environnement de développement

Docker fait beaucoup parlé de lui ces denriers temps, surtout après la levée de fond et la migration de nombreuses entreprise de la silicon valley (comme Google) sur cet outil.

Et pour cause, le principe est génial : avoir un environnement de développement exactement pareil quel que soit l'OS et la machine sur laquelle on déploie le projet. Dans le domaine du web, il est important d'être certain de ne pas avoir de soucis sur un passage entre PREPROD ou la PROD juste à cause d'une différence de version ou d'une librairie absente.

Bref, le principe est assez simple et plutôt simple à mettre en place. Imaginez, vous développez sur votre mac, mais avec un environnement exactement pareil que le serveur LAMP sur lequel on va déployer notre projet.

Bon point supplémentaire, grâce à docker-compose il sera extrêmement simple de rajouter des outils ou de jongler avec des versions de PHP.

Je me suis basé sur l'excellent tutoriel vidéo de grafikart. La version de docker utilisée pour le tutoriel est ancienne, mais elle ne diffère pas beaucoup.

En me basant sur ce tutoriel, j'ai créé un environnement de développement LAMP (Linux, Apache, MySQL, PHP). Tout est disponible sur mon github : https://github.com/Weysan/docker-php5.5.9

Initialisation de l'environnement de développement

Créons un dossier où l'on mettera toutes les sources de nos sites en cours de développement. Imaginons sur notre disque dur avoir créer un dossier /site-dev. Il faut y placer, dans un dossier /docker le contenu du github cité ci-dessus.

Lancer Docker toolbox, puis créons une nouvelle machine virtuelle :

#On créer une machine de développement appelé dev
docker-machine create --driver virtualbox dev

Ouvrir Virtual box, on devrait maintenant voir apparaitre une nouvelle machine : 'Dev'. Configurer un dossier partagé : /sites-dev => www

Dans le terminal docker, se connecter à la machine virtuelle :

docker-machine ssh dev

Monter la partition et la placer dans le directory /var/www :

mkdir /var/www
sudo mount -t vboxsf www /var/www

Installation de docker compose nécessaire à l'initialisation de l'environnement de développement :

sudo -i
curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
cp /usr/local/bin/docker-compose /var/lib/boot2docker/docker-compose

Copier le fichier bootlocale.sh dans le dossier persisté de boot2docker :

sudo cp docker/bootlocal.sh /var/lib/boot2docker/bootlocal.sh

Il est exécuté à chaque démarrage de la machine virtuel et permettra d'éviter de refaire toute ces manipulations à chaque démarrage. On redémarre désormais la machine virtuelle :

Exit
docker-machine restart dev && docker-machine ssh dev

Maintenant, on peut se placer dans le dossier docker et compiler nos container :

cd docker/
docker-compose up

Les services démarrent. Vous pouvez désormais accéder à tous vos dossiers en accédant à l'IP de votre machine virtuelle. Vous pouvez la connaitre avec :

docker-machine ip dev

Utilisation

On a désormais un environnement LAMP prêt à l'emploi avec une base de donnée MySql disponible et PHP. Il est possible de vous connecter à la base de données en utilisant les accès suivant dans votre script php :

host : db
login: root
password : root

Il n'y a pas de phpMyAdmin préinstallé, mais il est assez simple de télécharger l'utilitaire et de le placer à la racine du votre dossier partagé : /sites-dev

Il est possible d'ajouter des vhosts dans le dossier : /sites-dev/docker/sites. Des fichiers de conf sont déjà présent afin de donner un exemple. Ne pas oublier de rajouter le vhost dans son fichier hosts pour qu'il pointe sur l'IP de notre machine virtuelle!

Et sinon...?

Je suis en train de réaliser un package pour faire tourner PHP7 avec MySQL et ElasticSearch, vous le retrouvez sur mon github: https://github.com/Weysan/docker-php7.0-rc. L'utilisation est sensiblement la même. Il faudra juste penser à builder une image avant de lancer les container :

docker-compose build
#assez long puisqu'il va télécharger les images et les nouvelles configurations
docker-compose up

Je ne suis qu'au début de mon utilisation de docker, mais je trouve déjà cet outil extrêmement intéressant et proposant une infinité de possibilité.

PHP | écrit le 09/09/2015 15:12 par Raphaël - retour


 

Vous devez être connecté ou enregistré pour ajouter un commentaire.