Depuis mon article sur
la création d'un environnement de développement avec Docker sous Windows 10, j'ai testé d'autres méthodes afin de parvenir à un environnement plus pratique à mettre en place. Je pense être enfin parvenu à mon but ! Je vais donc partir du principe que le poste de travail est sous
Windows 10 Pro 64bit avec la virtualisation d'activé (
Gestionnaire des tâches > Performance > Processeur pour vérifier) sans aucun logiciel dédié à éxecuter/interpréter et délivrer du code PHP (comme
WampServer).
J'utilise
Windows PowerShell lorsque j'exécute des commandes de type console, j'ai donc remplacé, dans les paramètres accessibles par clique droit sur la barre des tâches,
Invite de commandes par
PowerShell.
Installation
A partir de maintenant, il va falloir installer
Docker pour Windows. Je vous conseille de prendre la version stable, de l'installer et de la lancer pour qu'elle active, si besoin, le module
Hyper-V (qui sert à la virtualisation) de Windows. Lorsque que Docker est prêt, je vous conseille d'aller tout de suite dans les
Settings, clique droit sur l'icône de Docker dans la barre des tâches. Dans le premier onglet, faites comme bon vous semble, toutefois je conseille de garder la mise à jour automatique de Docker. C'est dans l'onglet
Shared Drives que nous devons impérativement partager le disque sur lequel se trouvent vos fichiers. Validez puis Docker vous demandera le mot de passe de l'utilisateur qui devra être impérativement
non vide. Dans l'onglet Advanced, vous pouvez choisir les ressources allouées à Docker. Normalement, nous n'aurons pas besoin de toucher aux autres paramètres situés dans les autres onglets. Sachez toutefois, que dans l'onglet Reset vous pourrez redémarrer Docker et/ou le réinitialiser avec ses paramètres d'usine.
C'est parti !
Nous avons maintenant Docker fonctionnel sur notre poste de travail, nous allons pouvoir véritablement passer aux choses sérieuses. Ouvrons PowerShell pour commencer la configuration de notre environnement.
Réseau virtuel
Pour faciliter la liaison de tous nos conteneurs, j'ai décidé de créer un réseau virtuel dédié. Pour cela, rien de très compliqué, il suffit d'une petite commande :
docker network create local.dev
Ici,
local.dev est le nom de notre réseau virtuel. Il nous faudra ensuite connecter les conteneurs à ce réseau pour qu'ils puissent communiquer ensemble.
Conteneur de base de données
Nous allons maintenant créer notre premier conteneur qui sera le gestionnaire de base de données. J'ai choisi de, mon côté, d'utiliser MariaDB mais vous pouvez le remplacer par MySQL qui est identique.
docker run --name mariadb --network=local.dev -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mariadb
Il s'agit ici d'un conteneur pour une utilisation en locale uniquement. Avec cette commande nous avons créé et lancé un conteneur nommé
mariadb, connecté à notre réseau virtuel
local.dev, avec l'autorisation de laisser le mot de passe de
root à vide, détaché de la console et utilisant l'image
mariadb. Vous pouvez remplacer
mariadb par
mysql car leur fonctionnement est identique.
Conteneur d'application
Il est temps de créer notre conteneur d'application. J'ai choisi de pouvoir le paramètrer avec un fichier que nous placerons à la racine de notre projet. Il s'agit ici d'un projet
Symfony et l'image sur laquelle nous baserons notre conteneur est donc configurée pour ce framework. Créez un fichier
docker-compose.yml avec :
version: '2'
services:
web:
container_name: nom-du-conteneur
image: traskin/docker-symfony
volumes:
- .:/var/www/html
external_links:
- mariadb:db
ports:
- "80:80"
networks:
default:
external:
name: local.dev
Nous ne définissons ici qu'un seul service pour notre application. Si vous avez opté pour mysql, remplacez simplement mariadb par mysql. Créons le conteneur avec la commande :
docker-compose up
Au bout d'un temps, le conteneur est lancé et est fonctionnel. Arrêtez-le avec la combinaison
Ctrl+
C. Notre environnement de travail est prêt ! Vous pouvez le démarrer de deux manières différentes :
docker start <nom-du-conteneur>
docker-compose start
Pour pouvoir y accéder, vous devrez ajouter à votre fichier
hosts (situé
C:\Windows\System32\drivers\etc\hosts), avec les droits Administrateur, la ligne suivante :
127.0.0.1 local.dev
Après un rapide redémarrage de votre poste de travail pour prendre en compte cet alias, vous pourrez accéder à votre application à l'url :
http://local.dev/app_dev.php/ lorsque ce conteneur sera démarré.
PHPMyAdmin
Si vous souhaitez visualiser votre base de données, je vous propose la création d'un conteneur avec
PHPMyAdmin :
docker run --name phpmyadmin -p 8080:80 -e MYSQL_ROOT_PASSWORD= --network=local.dev --link mariadb:db -d phpmyadmin/phpmyadmin
Comme à chaque fois, vous pouvez remplacer
mariadb par
mysql. PHPMyAdmin est désormais accessible à l'url :
http://localhost:8080/.
Quelques commandes utiles
- Lister les conteneurs lancés :
docker ps
- Lister tous les conteneurs :
docker ps -a
- Arrêter un conteneur :
docker stop <nom du conteneur>
- Démarrer un conteneur :
docker start <nom du conteneur>
- Démarrer un conteneur via docker-compose :
docker-compose start
- Arrêter tous les conteneurs :
docker stop $(docker ps -q)
Pour ceux qui souhaiterais utiliser la console de Symfony, voici un exemple de la commande à utiliser :
docker exec -ti <nom du conteneur> php bin/console <commande>