Le problème
Qui n’a jamais galéré à jongler entre différentes versions d’un logiciel ou d’un langage, comme Apache, Postgresql, Python, Node ? « Ah mince, ce projet utilise Node 8 alors il faut que je change ma configuration parce que là j’ai Node 12 dans mon $PATH
. » Il y a bien quelques outils, comme les environnements virtuels pour Python, mais ce n’est pas universel.
Puis il y a eu Docker. Maintenant, son succès est avéré et il est inutile de présenter ce projet tellement utile aux ops. Mais se pourrait-il qu’il soit utile aux devs ? Eh bien oui. Vous voulez un environnement de développement propre, avec seulement GCC 9 et les dernières versions de Valgrind, GDB et Boost ? Il vous suffit d'installer un conteneur et de développer dedans. Mais c’est pas toujours très pratique. En effet, depuis votre éditeur, il n’y avait, par exemple, pas d’autocomplétion si l’on n’installait pas d’outils localement.
La solution
Mais récemment, une mise à jour de Visual Studio Code vient changer la donne. En effet, Microsoft a annoncé l’intégration officielle d’une extension permettant de se connecter directement dans un conteneur, entres autres. Il ne suffit que d’un simple fichier de configuration et vous voilà prêt à développer. Et vous bénéficiez désormais d’un vrai environnement, avec autocomplétion, débogueur et tout le reste, parce que Visual Studio se croit désormais à l’intérieur de votre conteneur et a donc tous les outils à sa disposition.
Pour arriver au résultat ci-dessus, je n’ai eu qu’à créer un fichier .devcontainer.json
, avec les quelques lignes suivantes, pour indiquer à Visual Studio Code comment builder et lancer mon conteneur.
{
"name": "Test C++",
"image": "gcc:9",
"extensions": [
"ms-vscode.cpptools"
]
}
Ensuite, je n’ai eu qu’à lui dire que je souhaitais ouvrir mon dossier dans un conteneur. En se basant sur le fichier de configuration, Visual Studio Code m’a téléchargé l’image Docker correspondante, m’a installé l’extension demandée puis a lancé le conteneur avec mon dossier monté dedans, prêt à travailler.
Dans le cadre du projet sur lequel je travaille au boulot, cela permettra d’avoir des conteneurs pour le développement Java, sans rien installer sur mon poste en local. Ainsi, aucun risque de mélanger les versions ni de pourrir son poste de développement. Je cite Java, mais il y a également NodeJS, Angular et C#, entres autres.
WSL 2 — Un vrai noyau Linux dans Windows
Alors que WSL est une traduction à la volée des appels systèmes Linux vers des appels systèmes Windows, la version 2 de ce projet sera un noyau Linux plus à jour et intégralement utilisable. En effet, il s’agira d’une micro machine virtuelle, optimisée spécialement pour ce projet.
Cela signifie que des applications autrefois utilisables seulement avec du bricolage le seront totalement, sans plus d’effort. C’est le cas de Docker. Sous peu, il sera donc possible, avec Windows 10, d’installer WSL 2, de profiter d’un Docker Linux entièrement fonctionnel et de développer dedans, en utilisant Visual Studio Code. Windows va enfin devenir une plateforme de développement agréable.