
Commencez votre aventure avec Docker-Console
Les personnes qui suivent notre blog savent déjà que nous utilisons Docker chez Droptica. Docker est excellent lorsque vous faites du développement avec Drupal car il vous permet de propager l'environnement entre les développeurs rapidement et facilement.
Nous vous avons également déjà montré à quel point il est facile de démarrer un projet en utilisant notre application docker-drupal.
Une autre étape sur la voie de l'efficacité et de la compétence avec Docker est l'application docker-console, qui est une version plus récente de docker-drupal, et exactement comme son prédécesseur, elle a été créée pour faciliter et rendre plus efficace la création d'un environnement de travail pour Drupal. Comment tout cela fonctionne-t-il ? Vous allez le voir dans cet article. Puisque nous travaillons tous sur Linux (principalement sur Ubuntu), toutes les commandes montrées dans cet article ont été exécutées sur Ubuntu.
Installation de Docker
Bien sûr, notre aventure commence par l'installation de Docker, vous pouvez lire à ce sujet dans l'un de nos articles précédents. Pour plus de clarté, pour installer Docker, vous devez exécuter les commandes suivantes :
wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker $(whoami)
sudo apt-get -y install python-pip
sudo pip install docker-compose
Installation de docker-console
Une autre étape consiste à installer l'application docker-console. Pour ce faire, vous devez d'abord installer le package python-pip, ce qui permet d'installer et de mettre à jour rapidement notre application :
sudo apt-get update && sudo apt-get -y install python-yaml python-setuptools python-pip python-dev build-essential
Maintenant, tout ce que vous avez à faire est d'installer docker-console, ce qui peut être fait en utilisant la commande suivante :
sudo pip install docker-console
Après l'installation, une nouvelle commande – docker-console (ou dcon en abrégé) – sera disponible dans votre terminal. Après l'avoir lancée, vous devriez obtenir une liste des options et actions disponibles :
Initialisation d'un nouveau projet
Nous pouvons maintenant enfin commencer notre aventure avec docker-console. Pour commencer, supposons que nous n'ayons pas de projet Drupal disponible, nous devons donc en démarrer un nouveau. Cela est possible en utilisant la commande suivante :
docker-console init --tpl drupal7
Après l'avoir exécuté, il devrait générer toute la structure du projet pour nous (comme sur l'image ci-dessus), ce qui nous permettra d'organiser rapidement et efficacement un projet. La commande est utilisée pour générer la structure d'un projet Drupal 7, mais rien ne vous empêche d'utiliser une commande pour générer un projet Drupal 8 à la place :
docker-console init --tpl drupal8
Cependant, aux fins de ce guide, je vais m'en tenir à un projet Drupal 7. L'étape suivante consiste à télécharger une version appropriée de Drupal de https://www.drupal.org/project/drupal et à décompresser l'archive dans le dossier “app”.
Démarrer les conteneurs
À ce stade, pour commencer à travailler sur le projet, vous devrez également lancer les conteneurs avec les services requis pour que la page fonctionne (par exemple : Apache, MySQL, PHPMyAdmin, Nginx – dans un environnement de travail traditionnel, vous devriez les installer localement sur votre machine). Tous les services dont nous aurons besoin pour le travail doivent être ajoutés et configurés dans le fichier docker-compose.XML (le fichier pour ce projet est présenté ci-dessous et peut être trouvé dans le dossier principal du projet.) Nous construisons nos fichiers docker-compose sur la base de la version 1. Si vous souhaitez en savoir plus sur sa construction, vous devriez visiter le site du projet : https://docs.docker.com/compose/compose-file/compose-file-v1/
La configuration que vous pouvez voir ci-dessous lancera trois conteneurs :
- web : Apache et PHP,
- MySQL,
- PHPMyAdmin.
Pour démarrer les conteneurs, exécutez la commande suivante :
dcon up
Après un moment (un moment plus long lors du premier lancement, car toutes les images devront d'abord être téléchargées), vous devriez voir un résultat similaire à ceci :
Le site est maintenant construit, vous pouvez aller à l'adresse IP du conteneur et y jeter un coup d'œil. Vous pouvez vérifier l'adresse IP en exécutant “docker inspect”.
docker inspect --format "{{ .NetworkSettings.IPAddress }}" dockerconsoleprojectexample_web_1
Dans mon cas, l'adresse était http://172.17.0.23/ (elle peut être différente, selon les conteneurs que vous lancez).
Installation de Drupal
Avant de commencer l'installation de Drupal, nous devons d'abord exécuter la commande :
dcon set-permissions
Cette commande définira les bonnes permissions sur les fichiers et répertoires dans le projet. De cette façon, nous éviterons les erreurs lors de l'installation.
Maintenant, en ouvrant cette adresse retournée par "docker inspect", vous devriez voir l'écran d'installation de Drupal. Il n'est en aucun cas différent d’un écran standard, je ne vais donc pas rédiger de guide étape par étape. Cependant, il est très important d'utiliser les données de votre fichier docker-compose.yml lorsqu'il vous est demandé de configurer votre base de données, exactement comme cela est montré dans les illustrations ci-dessous. Le nom de la base de données devrait être en accord avec le paramètre MYSQL_DATABASE, il en va de même pour les détails de l'utilisateur (le nom d'utilisateur peut être défini dans MYSQL_USER avec un mot de passe indiqué dans MYSQL_PASSWORD, vous pouvez également décider d'utiliser root, le mot de passe pour root est défini dans MYSQL_ROOT_PASSWORD), vous devez également saisir le nom de votre conteneur de base de données comme hôte, sinon vous ne pourrez pas vous y connecter.
Site web lancé
Maintenant, lorsque votre site est prêt et disponible à l'adresse IP du conteneur, vous pouvez implémenter vos modifications et ajouter du contenu. Vous devez toutefois garder à l'esprit que tout se passe dans les conteneurs Docker, donc si vous les supprimez, tout – y compris la base de données – sera perdu. Cela ne s'applique pas aux fichiers de l'application puisqu'ils ne sont que mappés d'un dossier local au dossier de l'app dans un conteneur. Si vous souhaitez sécuriser votre base de données et éviter de la perdre même si vous supprimez les conteneurs, vous devriez également mapper vos fichiers de base de données vers un dossier local. Ce qui est plus important, c'est que la base de données n'est pas supprimée lorsque les conteneurs sont simplement arrêtés, par exemple lorsque vous éteignez votre ordinateur. Dans ce cas, vous pouvez les relancer rapidement en exécutant à nouveau “dcon up”. Dans un autre exemple, nous allons effectuer un dump de la base de données, que nous pourrons utiliser plus tard pour construire un autre projet.
Reconstruction d'un projet
La première chose que vous devez faire est de faire un dump de votre base de données et de vos fichiers. Pour cela, j'ai utilisé le module de sauvegarde et de migration ( https://www.drupal.org/project/backup_migrate), mais vous pouvez le faire de la manière que vous préférez. Il est toutefois crucial que les fichiers et la base de données finissent en archives tar.gz nommées database.sql.tar.gz et files.tar.gz. Après cela, placez le fichier de la base de données dans le dossier app_databases, puis déplacez les fichiers compressés dans app_files.
Si vous souhaitez accéder au conteneur PHPMyAdmin afin de faire un dump de la base de données, vous pouvez bien sûr le faire facilement en vous rendant à l'adresse IP du conteneur PHPMyAdmin dans votre navigateur et en vous connectant avec les informations du fichier docker-compose.yml ci-dessus.
Pour faire un dump de la base de données, vous pouvez également utiliser la commande :
dcon dump
Cette commande crée un dump de la base de données, le compresse au format tar.gz immédiatement et le place dans le répertoire app_databases. app_databases est l'emplacement par défaut défini dans DUMP_EXPORT_LOCATION, dans la variable DB, dans le fichier dc_settings.py, qui peut être modifié si nécessaire.
Le fichier de dump ainsi créé est prêt à être importé, il suffit d'ajuster les autorisations et de changer également le nom en database.sql.tar.gz.
Si vous n'avez pas suivi toutes les étapes précédentes, vous pouvez télécharger mon projet, la base de données et les fichiers. De cette façon, vous pourrez commencer votre aventure avec docker-console sans créer votre propre projet après avoir installé docker, docker-compose et docker-console.
Répertoire du projet : https://github.com/DropticaExamples/docker-console-project-example
Dump de la base de données : https://www.dropbox.com/s/tcfkgpg2ume17r3/database.sql.tar.gz?dl=0
Fichiers de projet : https://www.dropbox.com/s/hl506wciwj60fds/files.tar.gz?dl=0
Pour cloner mon projet et lancer les conteneurs de service, vous devrez exécuter les commandes suivantes dans votre terminal :
cd
git clone https://github.com/DropticaExamples/docker-console-project-example
cd docker-console-project-example
git checkout docker-console-start
cd app_databases wget https://www.dropbox.com/s/tcfkgpg2ume17r3/database.sql.tar.gz?dl=0
cd ../app_files wget https://www.dropbox.com/s/tnl0ftfluyr5j7p/files.tar.gz?dl=0
cd ..
dcon up
Sinon, si vous utilisez un projet créé au préalable, tout ce que vous avez à faire est simplement :
dcon up
À moins, bien sûr, que vous n'ayez déjà lancé les conteneurs, dans ce cas, vous n'aurez pas besoin de les démarrer à nouveau (exécuter “dcon up” lorsque vos conteneurs sont en cours d'exécution ne devrait que vous indiquer qu'ils sont actifs et à jour).
Si vous n'êtes pas sûr que vos conteneurs Docker sont construits et actifs, vous pouvez le vérifier en utilisant :
docker ps -a
Si tout s'est bien passé, vous devriez avoir trois conteneurs en cours d'exécution :
- web : Apache et PHP,
- MySQL,
- PHPMyAdmin.
Construction d'un projet
Dans cette étape, nous allons restaurer notre environnement de travail basé sur les fichiers et la base de données, qui ont été placés dans les dossiers appropriés au préalable. En procédant ainsi, nous pouvons constamment travailler dans un environnement proche de la production. Maintenant, nous pouvons construire un site sur des conteneurs de travail. Pour ce faire, exécutez la commande :
dcon build
Dans les exemples précédents, nous ne l'avons pas fait, car il n'était pas nécessaire de démarrer une séquence de construction de projet – il n'y a pas de fichiers et la base de données est vide lorsque vous commencez un nouveau projet. Dans cet exemple, le processus de construction couvre les étapes suivantes :
- confirmation que le processus de construction doit commencer ;
- copie des paramètres ;
- nettoyage de la base de données ;
- importation de la base de données ;
- décompression des fichiers ;
- nettoyage du cache (drush cc all) ;
- génération de lien de connexion (drush uli) ;
- changement des permissions des fichiers.
C'est pourquoi, lorsque nous voulons importer une base de données et des fichiers vers un projet, nous devons exécuter “dcon build”.
Le site est prêt
Le site est maintenant construit et vous pouvez le visualiser exactement comme avant, en vous rendant à l'adresse IP du conteneur.
Résumé
Voici comment vous pouvez rapidement configurer un projet basé sur Docker et docker-console. À votre première tentative, il peut sembler que la procédure est assez compliquée, mais vous pouvez me croire que vous verrez rapidement un retour sur tout le temps investi à apprendre Docker, surtout lorsque vous voudrez rapidement ajouter un nouveau service à un projet existant ou tester d'autres configurations. Bien sûr, ce post n'est pas entièrement exhaustif, et si le temps le permet, nous allons écrire davantage sur docker-console.
En attendant, j'encourage tout le monde à lire le fichier readme du projet sur https://github.com/droptica/docker-console et à essayer de configurer votre propre projet avec Drupal 8. Faites-nous savoir comment cela s'est passé :)
Nous allons également partager les vidéos de DrupalCamp Wrocław 2017 avec vous bientôt, mettant en vedette Maciej Łukiański parlant de docker-console et d'autres sujets.