{"id":3348,"date":"2022-12-01T11:08:38","date_gmt":"2022-12-01T11:08:38","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"},"modified":"2026-03-09T13:07:45","modified_gmt":"2026-03-09T13:07:45","slug":"gerer-plusieurs-environnements-pour-plusieurs-projets-sur-une-seule-machine","status":"publish","type":"post","link":"https:\/\/thecodest.co\/fr\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","title":{"rendered":"G\u00e9rer plusieurs environnements pour plusieurs projets sur une seule machine ?"},"content":{"rendered":"<p>Examinons l'environnement de travail typique d'un <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/how-to-choose-software-house\/\">\u00e9diteur de logiciels<\/a>. Vous avez quelques clients qui ont des environnements diff\u00e9rents. Certains pr\u00e9f\u00e8rent MySQL, d'autres Postgres. Une version de votre application n\u00e9cessite <a href=\"https:\/\/thecodest.co\/fr\/blog\/top-programming-languages-to-build-e-commerce\/\">Java<\/a> 11, et un autre Java 17. Frontend a besoin de npm 12 ou 16 parce que vous utilisez diff\u00e9rentes versions de <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/what-is-node-js-used-for-in-angular\/\">angulaire<\/a>. Enfin, vous avez ce tableau tridimensionnel qui contient des combinaisons de toutes vos bases de donn\u00e9es, versions backend et frontend. \u00c7a a l'air grave, mais un jour votre patron vous dit...<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/comic.png\" alt=\"BD&lt;em&gt;avec&lt;\/em&gt;patron\" title=\"lorsque votre patron dit...\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Les racines d'un environnement multiversel<\/h2>\n\n\n\n<p>La situation d\u00e9crite ci-dessus n'est pas rare. La migration entre les versions d'une langue ou d'un cadre, les mises \u00e0 jour des bases de donn\u00e9es ou simplement des exigences diff\u00e9rentes de la part des clients peuvent bouleverser toutes les configurations. Nous devrions avoir une solution qui aide <a href=\"https:\/\/thecodest.co\/fr\/blog\/why-us-companies-are-opting-for-polish-developers\/\">nous<\/a> de g\u00e9rer ces changements, qui correspond \u00e0 quelques hypoth\u00e8ses et\/ou exigences et\/ou objectifs :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b> facile \u00e0 utiliser<\/b> - une seule commande pour modifier une configuration ou une version,<\/li>\n\n\n\n<li><b>riche biblioth\u00e8que<\/b> - devrait prendre en charge de multiples technologies et \"choses\" (biblioth\u00e8ques, cadres, applications),<\/li>\n\n\n\n<li><b> extensible<\/b> - vous devriez offrir la possibilit\u00e9 d'ajouter vos plugins.<\/li>\n<\/ul>\n\n\n\n<p>Dans cet article, je me concentrerai sur trois domaines. Le premier concerne les outils pour Java et la JVM. Le deuxi\u00e8me concerne les outils \u00e0 usage g\u00e9n\u00e9ral. Le troisi\u00e8me est la mani\u00e8re d'utiliser <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/docker-developer\/\">docker<\/a> pour atteindre nos objectifs.<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Je suis Java et je travaille sur la JVM<\/h2>\n\n\n\n<p>Lorsque vous \u00eates un <strong><a href=\"https:\/\/thecodest.co\/fr\/dictionary\/java-developer\/\">D\u00e9veloppeur Java<\/a><\/strong> ou, plus g\u00e9n\u00e9ralement, vous travaillez avec <strong>Technologies JVM<\/strong>Vous pouvez alors utiliser <a href=\"https:\/\/sdkman.io\/\">SDKMAN !<\/a>. Il s'agit d'un outil tr\u00e8s agr\u00e9able et facile \u00e0 utiliser qui prend en charge de nombreuses biblioth\u00e8ques, frameworks et langages.<\/p>\n\n\n\n<p>Le processus d'installation de <strong>SDKMAN !<\/strong> C'est assez simple. Vous devez courir :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>curl -s \"https:\/\/get.sdkman.io\" | bash<\/code><\/code><\/pre>\n\n\n\n<p>et ensuite<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code><code>source \"$HOME\/.sdkman\/bin\/sdkman-init.sh\"<\/code><\/code><\/code><\/pre>\n\n\n\n<p>Vous pouvez d\u00e9sormais g\u00e9rer vos <strong>Java<\/strong>, <strong>Scala<\/strong> et <strong>Maven<\/strong> versions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gestion des versions - exemple<\/h3>\n\n\n\n<p>Dans cet exemple, nous installerons et mettrons \u00e0 jour la version de quelques outils. Il ne s'agit que d'un petit sous-ensemble d'outils disponibles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<p>Supposons que votre nouveau <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/why-do-projects-fail\/\">projet<\/a> utilise <strong>Java 17<\/strong>. Vous n'avez pas de <strong>Java<\/strong> install\u00e9e. Vous voulez l'installer et, en plus, ajouter un outil Maven Daemon pour rendre les constructions plus rapides. Vous devez donc \u00e9galement installer Maven. Pour ce faire, vous devez ex\u00e9cuter trois commandes simples :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sdk install java 17-open\n\n$ sdk install maven 3.8.4\n\n$ sdk install mvnd 0.7.1<\/code><\/pre>\n\n\n\n<p>\u00c0 la fin de l'installation de chaque outil, il vous sera demand\u00e9 si vous souhaitez le mettre par d\u00e9faut :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>Vous souhaitez que Java 17-open soit d\u00e9fini par d\u00e9faut (Y\/n) :<\/code><\/code><\/pre>\n\n\n\n<p>Ceci est important lorsque vous installez une nouvelle version d'une biblioth\u00e8que ou d'un langage, car SDKMAN ! d\u00e9finira cette version par d\u00e9faut comme globale pour tous les terminaux de l'utilisateur actuel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00e9rification des versions et mise \u00e0 jour<\/h3>\n\n\n\n<p>De temps en temps, SDKMAN ! doit mettre \u00e0 jour les index. Au cours de cette op\u00e9ration, vous pouvez recevoir un message indiquant qu'il existe de nouvelles versions des outils que vous utilisez. Vous pouvez v\u00e9rifier quelles sont les versions disponibles en tapant <code>sdk ls<\/code>. Pour <code>sdk ls maven<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Versions disponibles de Maven\n\n================================================================================\n\n    3.8.6 3.3.3\n\n    3.8.5 3.3.1\n\n3.8.4 3.2.5\n\n    3.8.3 3.2.3\n\n    3.8.2 3.2.2\n\n    3.8.1 3.2.1\n\n    3.6.3 3.1.1\n\n    3.6.2 3.1.0\n\n    3.6.1 3.0.5\n\n    3.6.0 3.0.4\n\n    3.5.4\n\n    3.5.3\n\n    3.5.2\n\n    3.5.0\n\n    3.3.9\n\n\n\n================================================================================\n\nversion locale\n\nen cours d'utilisation\n\n================================================================================<\/code><\/pre>\n\n\n\n<p>Comme nous le voyons ci-dessus, Maven a une version plus r\u00e9cente que celle que nous utilisons. Il en va de m\u00eame pour <code>mvnd<\/code> (0.8.2) et Java (19-open). Mettons tout \u00e0 jour. Pour cela, il suffit d'appeler la commande install mais cette fois-ci, nous n'utilisons pas de sp\u00e9cificateur de version :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sdk install maven\n\n$ sdk install mvnd\n\n$ sdk install java<\/code><\/pre>\n\n\n\n<p>Mais il s'est pass\u00e9 quelque chose d'anormal. <code>Maven<\/code> et <code>mvnd<\/code> ont des versions correctes, mais <strong>Java<\/strong> a une version <code>17.0.5-tem<\/code>. C'est parce que la version la plus r\u00e9cente de l'outil est contr\u00f4l\u00e9e par son fournisseur et non par SDKMAN ! local. Qui est ce fournisseur ? Dans SDKMAN !, un vendeur est quelqu'un qui peut publier une version. Cependant, admettons que nous ayons finalement install\u00e9 <code>19-ouvert<\/code>et nous l'avons mis par d\u00e9faut, mais pour une raison ou une autre, nous avons besoin d'utiliser <code>17-ouvert<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versions locales et gestion des versions par terminal<\/h3>\n\n\n\n<p>\u200b<br>Nous pouvons configurer un <code>par d\u00e9faut<\/code> version d'un outil qui est globale pour tous les projets et terminaux. Mais lorsque nous avons besoin d'une version sp\u00e9cifique, nous avons deux possibilit\u00e9s. La premi\u00e8re consiste \u00e0 utiliser la fonction <code>sdk use<\/code> \u00e0 chaque fois que nous voulons utiliser une version sp\u00e9cifique d'un outil dans le terminal courant. La seconde consiste \u00e0 pr\u00e9parer une liste de versions dans un fichier <code>.sdkmanrc<\/code> qui est stock\u00e9 avec le projet.<\/p>\n\n\n\n<p>Alors que la premi\u00e8re option est destin\u00e9e \u00e0 un usage unique, la seconde est con\u00e7ue pour le travail en \u00e9quipe et le partage des configurations entre les utilisateurs. <a href=\"https:\/\/thecodest.co\/fr\/dictionary\/how-to-lead-software-development-team\/\">\u00e9quipe<\/a> les membres.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Avantages et inconv\u00e9nients de SDKMAN !<\/h3>\n\n\n\n<p>SDKMAN ! est tr\u00e8s facile \u00e0 utiliser et dispose d'une riche biblioth\u00e8que d'outils, de cadres et de langages pris en charge. Il fonctionne sous Linux, MacOS et Windows. En revanche, cet outil est ax\u00e9 sur la JVM et n\u00e9cessite l'acceptation de l'auteur en tant que fournisseur. En outre, la m\u00e9canique de <code>.sdkmanrc<\/code> est tr\u00e8s m\u00e9diocre et pourrait ralentir consid\u00e9rablement le processus de changement d'annuaire.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">J'aimerais utiliser de nombreuses autres langues<\/h2>\n\n\n\n<p>Si vous avez besoin d'utiliser de nombreux langages et outils, vous devriez jeter un coup d'\u0153il \u00e0 <a href=\"https:\/\/asdf-vm.com\/\">asdf<\/a>. Cet outil se concentre sur les outils de \"haut niveau\". Alors que dans SDKMAN ! vous pouvez trouver de nombreux outils sp\u00e9cifiques \u00e0 Java, comme Bpipe ou Znai, asdf offre beaucoup plus d'outils, mais pas aussi sp\u00e9cifiques. Bien s\u00fbr, certains de ces outils se chevauchent, par exemple Java, Tomcat ou mvnd sont disponibles dans les deux.<\/p>\n\n\n\n<p>Lorsque vous souhaitez utiliser <code>asdf<\/code>Vous devez avoir <code>git<\/code> et <code>boucler<\/code> install\u00e9. Ensuite, il vous suffit de :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>git clone https:\/\/github.com\/asdf-vm\/asdf.git ~\/.asdf --branch v0.10.2<\/code><\/code><\/pre>\n\n\n\n<p>et ajoutez ces lignes dans <code>~\/.bashrc<\/code> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">. $HOME\/.asdf\/asdf.sh\n\n. $HOME\/.asdf\/completions\/asdf.bash<\/code><\/pre>\n\n\n\n<p>Vous pouvez d\u00e9sormais installer des plugins et des outils dans vos versions pr\u00e9f\u00e9r\u00e9es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gestion bas\u00e9e sur des plugins<\/h3>\n\n\n\n<p>Contrairement \u00e0 SDKMAN ! <code>asdf<\/code> utilise des plugins pour g\u00e9rer les outils. Ainsi, avant d'installer un outil, vous devez installer un plugin. Revenons \u00e0 notre projet d'exemple et essayons de configurer l'environnement \u00e0 l'aide de <code>asadfsdf<\/code>.<\/p>\n\n\n\n<p>Tout d'abord, nous devons installer les plugins :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">asdf plugin add java\n\nasdf plugin add maven\n\nasdf plugin add mvnd<\/code><\/pre>\n\n\n\n<p>Nous pouvons ensuite installer nos outils :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">asdf install java openjdk-17\n\nasdf install maven 3.8.4\n\nasdf install mvnd 0.7.1<\/code><\/pre>\n\n\n\n<p>Et une fois de plus, contrairement \u00e0 SDKMAN ! <code>asdf<\/code> ne change rien \u00e0 notre environnement. Lorsque nous essayons d'utiliser Java, nous obtenons un message d'erreur du type :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Aucune version n'est d\u00e9finie pour la commande Java\n\nPensez \u00e0 ajouter l'une des versions suivantes dans votre fichier de configuration \u00e0 ~\/.tool-versions\n\njava openjdk-17<\/code><\/pre>\n\n\n\n<p>Nous devons cr\u00e9er un fichier <code>.tool-versions<\/code> dans le r\u00e9pertoire personnel pour g\u00e9rer les versions par d\u00e9faut.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versions locales et globales<\/h3>\n\n\n\n<p>Mise \u00e0 jour des versions de logiciels avec <code>asdf<\/code> est assez simple. Il suffit d'installer une nouvelle version. Comme ce processus n'affecte pas l'environnement, nous pouvons le faire \u00e0 n'importe quel moment et \u00e0 n'importe quel endroit du syst\u00e8me de fichiers. Lorsque nous voulons utiliser une version sp\u00e9cifique d'un logiciel, nous devons cr\u00e9er dans le r\u00e9pertoire du projet un fichier <code>.tool-versions<\/code> qui pourrait \u00eatre partag\u00e9 entre les membres de l'\u00e9quipe. N'oubliez pas que vous devez vous assurer que tous les membres de l'\u00e9quipe disposent des informations suivantes <code>asdf<\/code> et des plugins install\u00e9s. La liste des plugins que vous pouvez trouver <a href=\"https:\/\/github.com\/asdf-vm\/asdf-plugins\">ici<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conflits de versions<\/h3>\n\n\n\n<p><code>asdf<\/code> ne prend pas seulement en charge les langages de programmation, les cadres et les outils tels que vim ou kubernetess. Il prend \u00e9galement en charge les bases de donn\u00e9es. Dans ce cas, nous pourrions installer plusieurs versions de Postgres, par exemple, mais une seule instance pourrait fonctionner. C'est parce que <code>asdf<\/code> ex\u00e9cute des commandes directement sur votre syst\u00e8me d'exploitation sans aucune couche de s\u00e9paration. Cela entra\u00eene des probl\u00e8mes tels que \"port d\u00e9j\u00e0 utilis\u00e9\" et des conflits de ressources.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Avantages et inconv\u00e9nients<\/h3>\n\n\n\n<p><code>asdf<\/code> est un tr\u00e8s bon outil si vous souhaitez travailler dans un environnement polyglotte. Il prend en charge de nombreux outils, langages et cadres. L'architecture bas\u00e9e sur des plugins permet de l'\u00e9tendre tr\u00e8s facilement. Cependant, certains outils pr\u00e9sents dans la biblioth\u00e8que n\u00e9cessitent un travail suppl\u00e9mentaire lors de l'installation afin de fournir toutes les d\u00e9pendances n\u00e9cessaires. <code>asdf<\/code> ne fonctionne pas sous Windows, m\u00eame sous <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_Subsystem_for_Linux\">WSL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dernier point, mais non des moindres - Docker<\/h2>\n\n\n\n<p>Lorsque je parle du conflit portuaire ci-dessus, beaucoup d'entre vous connaissent la solution.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.docker.com\/\">Docker<\/a> pourrait nous aider dans certains cas. Je le mentionne par devoir, car cet outil est si grand et si complexe qu'il est impossible d'en parler dans un seul article.<\/p>\n\n\n\n<p>Avec Docker, nous devrions utiliser un fichier <a href=\"https:\/\/docs.docker.com\/compose\/\">docker-compose<\/a> qui nous donne la possibilit\u00e9 de coordonner des environnements multi-conteneurs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Avantages et inconv\u00e9nients de Docker<\/h3>\n\n\n\n<p>Docker nous aide \u00e0 g\u00e9rer des outils qui ont besoin de ressources sp\u00e9cifiques, comme des ports ou des fichiers. Il s\u00e9pare les instances dans des conteneurs et nous donne un contr\u00f4le total sur ces derniers. N\u00e9anmoins, Docker est un outil qui introduit beaucoup de complexit\u00e9 dans notre environnement de travail et peut s'av\u00e9rer probl\u00e9matique dans certains cas. L'un de ces cas d'utilisation de Docker dans un test est d\u00e9crit dans l'une de nos pr\u00e9c\u00e9dentes publications. <a href=\"https:\/\/thecodest.co\/blog\/test-containers-how-to-make-tests-easier\">article<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">En r\u00e9sum\u00e9<\/h2>\n\n\n\n<p>Je sais que je n'ai pas d\u00e9crit tous les outils qui peuvent \u00eatre utilis\u00e9s pour g\u00e9rer les versions d'outils. Il en existe beaucoup d'autres, tels que <a href=\"https:\/\/www.jenv.be\/\">jEnv<\/a> qui pourrait remplacer SDKMAN,<\/p>\n\n\n\n<p>ou <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">NVM<\/a> que nous pouvons utiliser pour g\u00e9rer npm ou <a href=\"https:\/\/rvm.io\/\">RVM<\/a> pour <a href=\"https:\/\/thecodest.co\/fr\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Rubis<\/a>. Je me suis concentr\u00e9 sur les outils que j'ai \"test\u00e9s sur le champ de bataille\" et que je peux recommander \u00e0 tout le monde.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/thecodest.co\/contact\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1283\" height=\"460\" src=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_.png\" alt=\"\" class=\"wp-image-4927\" srcset=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_.png 1283w, https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_-300x108.png 300w, https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_-1024x367.png 1024w, https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_-768x275.png 768w, https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_-18x6.png 18w, https:\/\/thecodest.co\/app\/uploads\/2024\/05\/interested_in_cooperation_-67x24.png 67w\" sizes=\"auto, (max-width: 1283px) 100vw, 1283px\" \/><\/a><\/figure>","protected":false},"excerpt":{"rendered":"<p>Existe-t-il un moyen id\u00e9al de g\u00e9rer plusieurs environnements pour un grand nombre de personnes sur une seule machine ? Notre expert Java Bart\u0142omiej conna\u00eet la r\u00e9ponse !<\/p>","protected":false},"author":2,"featured_media":3349,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3348","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Handle multiple environments for multiple projects on one machine? - The Codest<\/title>\n<meta name=\"description\" content=\"Discover how developers can handle multiple environments for different projects on a single machine using version managers and containerization.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/fr\/blog\/gerer-plusieurs-environnements-pour-plusieurs-projets-sur-une-seule-machine\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Handle multiple environments for multiple projects on one machine?\" \/>\n<meta property=\"og:description\" content=\"Discover how developers can handle multiple environments for different projects on a single machine using version managers and containerization.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/fr\/blog\/gerer-plusieurs-environnements-pour-plusieurs-projets-sur-une-seule-machine\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-01T11:08:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-09T13:07:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Handle multiple environments for multiple projects on one machine?\",\"datePublished\":\"2022-12-01T11:08:38+00:00\",\"dateModified\":\"2026-03-09T13:07:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"},\"wordCount\":1315,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\",\"name\":\"Handle multiple environments for multiple projects on one machine? - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png\",\"datePublished\":\"2022-12-01T11:08:38+00:00\",\"dateModified\":\"2026-03-09T13:07:45+00:00\",\"description\":\"Discover how developers can handle multiple environments for different projects on a single machine using version managers and containerization.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Handle multiple environments for multiple projects on one machine?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/fr\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"G\u00e9rer plusieurs environnements pour plusieurs projets sur une seule machine ? - The Codest","description":"D\u00e9couvrez comment les d\u00e9veloppeurs peuvent g\u00e9rer plusieurs environnements pour diff\u00e9rents projets sur une seule machine gr\u00e2ce aux gestionnaires de versions et \u00e0 la conteneurisation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/fr\/blog\/gerer-plusieurs-environnements-pour-plusieurs-projets-sur-une-seule-machine\/","og_locale":"fr_FR","og_type":"article","og_title":"Handle multiple environments for multiple projects on one machine?","og_description":"Discover how developers can handle multiple environments for different projects on a single machine using version managers and containerization.","og_url":"https:\/\/thecodest.co\/fr\/blog\/gerer-plusieurs-environnements-pour-plusieurs-projets-sur-une-seule-machine\/","og_site_name":"The Codest","article_published_time":"2022-12-01T11:08:38+00:00","article_modified_time":"2026-03-09T13:07:45+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Handle multiple environments for multiple projects on one machine?","datePublished":"2022-12-01T11:08:38+00:00","dateModified":"2026-03-09T13:07:45+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"},"wordCount":1315,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png","articleSection":["Software Development"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","url":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","name":"G\u00e9rer plusieurs environnements pour plusieurs projets sur une seule machine ? - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png","datePublished":"2022-12-01T11:08:38+00:00","dateModified":"2026-03-09T13:07:45+00:00","description":"D\u00e9couvrez comment les d\u00e9veloppeurs peuvent g\u00e9rer plusieurs environnements pour diff\u00e9rents projets sur une seule machine gr\u00e2ce aux gestionnaires de versions et \u00e0 la conteneurisation.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/how_to_handle_multiple_environments_for_numerous_projects_on_just_one_machine_.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Handle multiple environments for multiple projects on one machine?"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/fr\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/comments?post=3348"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3348\/revisions"}],"predecessor-version":[{"id":8550,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/posts\/3348\/revisions\/8550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media\/3349"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/media?parent=3348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/categories?post=3348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/fr\/wp-json\/wp\/v2\/tags?post=3348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}