Pour optimiser les Dev Containers, l’auteur propose une approche basée sur les prebuilds : créer une image Docker générique (avec Zsh, Oh My Zsh, Docker-in-Docker, etc.) et la réutiliser comme base pour tous ses projets. Cela évite de reconstruire l’environnement à chaque fois et réduit le temps de démarrage. Il utilise aussi des volumes Docker pour persister l’historique des commandes et les dépendances Maven entre les conteneurs. Grâce à la CLI des Dev Containers, il construit et pousse ces images pré-configurées, puis les utilise directement dans ses projets (ex. : Java avec Maven, JBang, Quarkus). Résultat : des environnements prêts en quelques secondes, même si la taille des images reste conséquente. Une méthode idéale pour gagner en efficacité, surtout lors des changements de machine ou pour standardiser ses outils de dev.
Cet article explore des techniques avancées pour personnaliser les Dev Containers, allant au-delà de la simple configuration de base. L’auteur illustre comment installer un outil comme SliDesk via différentes méthodes : en utilisant postCreateCommand
(simple mais répétitif), en créant une feature (réutilisable et versionnable, idéale pour partager des configurations), ou en construisant une image Docker custom (pour un environnement sur mesure et optimisé). Il aborde aussi l’utilisation de Docker in Docker pour construire des images directement depuis le conteneur, et de Docker Compose pour gérer des environnements complexes incluant des bases de données ou d’autres services. Enfin, il présente les templates, qui permettent de pré-configurer des Dev Containers pour des projets similaires, évitant ainsi la duplication de code. Une lecture essentielle pour qui veut industrialiser et standardiser ses environnements de développement avec flexibilité et efficacité !
Les Dev Containers permettent de configurer un environnement de développement complet dans un conteneur Docker, évitant ainsi les conflits de versions et les installations locales fastidieuses. Idéal pour gérer plusieurs SDK (Java, NodeJS, Python, Ruby, etc.), ils rendent l’environnement portable et reproductible, ce qui est particulièrement utile pour les projets Open Source ou le travail sur différentes machines. Intégrés nativement à VSCode (et partiellement à IntelliJ Ultimate), ils offrent une expérience fluide : configuration as code, partage de projet clé en main, et isolation des outils. L’auteur illustre leur utilisation avec un blog Jekyll, soulignant la simplicité d’initialisation, la gestion automatique des ports, et la possibilité d’ajouter des outils ou extensions via des features. Bien que performants, leur usage peut impacter la mémoire et le stockage, mais les CDE (Cloud Development Environments) offrent une alternative pour les configurations légères. Une solution pratique pour standardiser et simplifier le développement !
Les conférences :
- L’IA n’existe pas : Luc Julia a critiqué l'idée de révolution de l'IA, soulignant son évolution continue et le rôle crucial des humains derrière les technologies.
- Github Copilot : Kim-Adeline Miguel et Sandra Parlant ont démontré les nouvelles fonctionnalités de Github Copilot, notamment le chat immersif et les revues de code automatisées.
- Ne perdez plus vos photos de vacances (ou tout autre fichier important) : J'ai présenté des stratégies pour sauvegarder et protéger les fichiers importants, recevant des retours positifs et des suggestions pertinentes.
- Comment nous avons transformé les Restos du Coeur en Cloud Provider : Julien Briault et Stéphane Trognon ont partagé la transformation des Restos du Coeur en fournisseur de cloud grâce à OpenStack et Kubernetes, réduisant les coûts et améliorant l'efficacité.
- Ça marche dans mon .devcontainer : Benoit Moussaud a présenté les avantages des environnements de développement en conteneurs, soulignant leur utilité pour l'onboarding et la gestion des versions.
- Burrito est un TACoS : une alternative open-source à Terraform Cloud : Luca et Lucas ont introduit Burrito, une alternative open-source à Terraform Cloud, qui améliore la gestion de l'infrastructure as code avec des fonctionnalités avancées.