Un environnement local Dockerisé en deux lignes de commande avec ddev

Construire un environnement de développement en local peut être fastidieux. Si l’on souhaite un environnement “natif”, il faudra installer tout le nécessaire en local. L’utilisation de machines virtuelles est pratique, mais gourmand en ressources matérielles. L’alternative à tout cela c’est bien évidemment les conteneurs qui ont été popularisés par Docker.

Néanmoins, tout n’est pas rose. Lorsqu’on travail sur de multiples projets, on peut se retrouver rapidement à copier/coller des configurations Docker Compose à droite et à gauche, ce qui peut ne pas être pratique. De plus, la configuration peut-être légèrement différente que l’on travaille sur Linux, Mac ou Windows ce qui ne facilite pas forcément le partage de configuration.

Mais c’était sans compter DDEV dont l’objectif est de simplifier la configuration des environnements locaux fonctionnant via des conteneurs.

Ddev offre une solution permettant de gérer des environnements locaux de développement entièrement conteneurisés de manière à ce qu’il ne soit pas nécessaire d’installer quoi que se soit sur votre machine (mis à part Docker et Ddev lui-même). Disponible pour Linux, Mac & Windows, il est également capable de fonctionner dans des environnements cloud tels que Gitpod ou Github Codespaces.

Aussi simple que puissant, Ddev vous permettra en quelques lignes de commande d’installer, configurer et lancer tout le nécessaire au bon fonctionnement de votre projet PHP (de type CMS tel que Drupal ou WordPress, mais aussi vos projets Laravel, Symfony ou même CakePHP) ou Python (expérimental). Bien entendu, il ne se contente pas de fournir des images pour votre langage favori, au travers d’un système d’extension, vous aurez la possibilité d’ajouter à votre environnement un service préexistant (comme des CRONtab, de l’Elasticsearch, du Minio, des bases MongoDB ou Redis et même des systèmes de messages comme Beanstalk ou RabbitMQ) ou bien d’ajouter le vôtre.

En plus de toutes ces fonctionnalités, une fois le projet démarré, Ddev fournit une URL vous permettant d’accéder à ce dernier. L’expérience avec Docker, montre que bien souvent, nous autres développeurs avons des difficultés à gérer le mapping des droits entre notre conteneur et notre système de fichier. Là encore, tout est géré à notre place.

Pour ma part, Ddev commence à remplacer petit à petit l’environnement hybride que j’avais l’habitude de mettre en place à savoir un PHP natif installé sur machine et fonctionnement au travers de Symfony CLI qui était couplé avec des conteneurs Docker pour toutes les autres dépendances (base de données, RabbitMQ, gestion des emails…).

Vous n’êtes pas encore convaincu ? Je vous propose un petit test. Prenez 5 minutes pour installer Ddev. Une fois fait, je vous propose de créer le projet de démo de Symfony: symfony new ddev-demo --demo.

Puis pour configurer notre environnement, nous allons utiliser la commande ddev config et renseigner les différentes informations demandées:

$ cd ddev-demo
$ ddev config

Creating a new DDEV project config in the current directory (ddev-demo)
Once completed, your configuration will be written to ddev-demo/.ddev/config.yaml

Project name (ddev-demo): 'ddev-demo'

The docroot is the directory from which your site is served.
This is a relative path from your project root at ddev-demo
You may leave this value blank if your site files are in the project root

Docroot Location (public): 'public'
Found a php codebase at ddev-demo/public.

Project Type [backdrop, cakephp, craftcms, django4, drupal, drupal6, drupal7, laravel, magento, magento2, php, python, shopware6, silverstripe, typo3, wordpress] (php): 'php'

Configuration complete. You may now run 'ddev start'.

Il n’y a pas de projet type Symfony, nous nous contentons alors de spécifier le dossier public et d’indiquer qu’il s’agit d’un projet PHP.

Il ne reste maintenant plus qu’à démarrer notre environnement via la commande ddev start:

Starting ddev-demo...
 Container ddev-ssh-agent  Recreate
 Container ddev-ssh-agent  Recreated
 Container ddev-ssh-agent  Started
ssh-agent container is running: If you want to add authentication to the ssh-agent container, run 'ddev auth ssh' to enable your keys.
Building project images...
......Project images built in 6s.
 Network ddev-demo_default  Created
 Container ddev-demo-ddev-web  Created
 Container ddev-demo-ddev-db  Created
 Container ddev-demo-ddev-db  Started
 Container ddev-demo-ddev-web  Started
Waiting for containers to become ready: [web db]
Starting ddev-router if necessary...
 Container ddev-router  Created
 Container ddev-router  Started
Successfully started demo-ddev
Your project can be reached at https://demo-ddev.ddev.site
See 'ddev describe' for alternate URLs.

Vous avez maintenant un projet de démo fonctionnel au travers de l’URL https://demo-ddev.ddev.site

Bluffant non ?