{"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":"gestire-piu-ambienti-per-piu-progetti-su-ununica-macchina","status":"publish","type":"post","link":"https:\/\/thecodest.co\/it\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","title":{"rendered":"Gestire pi\u00f9 ambienti per pi\u00f9 progetti su un'unica macchina?"},"content":{"rendered":"<p>Diamo un'occhiata all'ambiente di lavoro tipico di un'azienda di <a href=\"https:\/\/thecodest.co\/it\/dictionary\/how-to-choose-software-house\/\">software house<\/a>. Avete alcuni clienti che hanno ambienti diversi. Alcuni preferiscono MySQL, altri Postgres. Una versione della vostra applicazione ha bisogno di <a href=\"https:\/\/thecodest.co\/it\/blog\/top-programming-languages-to-build-e-commerce\/\">Java<\/a> 11 e un altro Java 17. Frontend ha bisogno di npm 12 o 16 perch\u00e9 si usano versioni diverse di <a href=\"https:\/\/thecodest.co\/it\/dictionary\/what-is-node-js-used-for-in-angular\/\">angolare<\/a>. Infine, si ha un array tridimensionale che contiene le combinazioni di tutti i DB, le versioni del backend e del frontend. Sembra brutto, ma un giorno il vostro capo dice...<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/comic.png\" alt=\"fumetti&lt;em&gt;con&lt;\/em&gt; il capo\" title=\"quando il tuo capo dice...\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Radici di un ambiente multiverso<\/h2>\n\n\n\n<p>La situazione descritta sopra non \u00e8 rara. La migrazione tra versioni di linguaggi o framework, gli aggiornamenti dei database o semplicemente le diverse esigenze dei clienti possono stravolgere tutte le configurazioni. Dovremmo avere una soluzione che aiuti <a href=\"https:\/\/thecodest.co\/it\/blog\/why-us-companies-are-opting-for-polish-developers\/\">noi<\/a> gestire tali cambiamenti, uno che corrisponda ad alcuni presupposti e\/o requisiti e\/o obiettivi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b> facile da usare<\/b> - singolo comando per modificare una configurazione o una versione,<\/li>\n\n\n\n<li><b>ricca biblioteca<\/b> - dovrebbe supportare pi\u00f9 tecnologie e \"cose\" (librerie, framework, applicazioni),<\/li>\n\n\n\n<li><b> estensibile<\/b> - dovreste offrire la possibilit\u00e0 di aggiungere i vostri plugin.<\/li>\n<\/ul>\n\n\n\n<p>In questo articolo mi concentrer\u00f2 su tre aree. La prima \u00e8 quella degli strumenti per Java e JVM. La seconda \u00e8 quella degli strumenti di uso generale. Il terzo \u00e8 come utilizzare <a href=\"https:\/\/thecodest.co\/it\/dictionary\/docker-developer\/\">docker<\/a> per raggiungere i nostri obiettivi.<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sono un esperto di Java e lavoro su JVM<\/h2>\n\n\n\n<p>Quando si \u00e8 un <strong><a href=\"https:\/\/thecodest.co\/it\/dictionary\/java-developer\/\">Sviluppatore Java<\/a><\/strong> o, pi\u00f9 in generale, si lavora con <strong>Tecnologie JVM<\/strong>\u00e8 possibile utilizzare <a href=\"https:\/\/sdkman.io\/\">SDKMAN!<\/a>. \u00c8 uno strumento molto bello e facile da usare che supporta molte librerie, framework e linguaggi.<\/p>\n\n\n\n<p>Il processo di installazione di <strong>SDKMAN!<\/strong> \u00c8 piuttosto semplice. \u00c8 necessario eseguire:<\/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>e poi<\/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>Ora \u00e8 possibile gestire il proprio <strong>Java<\/strong>, <strong>Scala<\/strong> e <strong>Maven<\/strong> versioni.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gestione delle versioni - esempio<\/h3>\n\n\n\n<p>In questo esempio, installeremo e aggiorneremo la versione di alcuni strumenti. Questo \u00e8 solo un piccolo sottoinsieme degli strumenti disponibili.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installazione<\/h3>\n\n\n\n<p>Supponiamo che il vostro nuovo <a href=\"https:\/\/thecodest.co\/it\/dictionary\/why-do-projects-fail\/\">progetto<\/a> usi <strong>Java 17<\/strong>. Non avete alcun <strong>Java<\/strong> installata. Si vuole installarla e, inoltre, aggiungere uno strumento Maven Daemon per rendere le compilazioni pi\u00f9 veloci. Quindi, \u00e8 necessario installare anche Maven. Per farlo, \u00e8 necessario eseguire tre semplici comandi:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sdk installare java 17-open\n\n$ sdk installare maven 3.8.4\n\n$ sdk installare mvnd 0.7.1<\/code><\/pre>\n\n\n\n<p>Al termine dell'installazione di ogni strumento, vi verr\u00e0 chiesto di renderlo predefinito:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>Si desidera che Java 17-open sia impostato come predefinito? (Y\/n):<\/code><\/code><\/pre>\n\n\n\n<p>Questo \u00e8 importante quando si installa una nuova versione di una libreria o di un linguaggio, perch\u00e9 SDKMAN! imposter\u00e0 la versione predefinita come globale per tutti i terminali dell'utente corrente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Controllo delle versioni e aggiornamento<\/h3>\n\n\n\n<p>Di tanto in tanto, SDKMAN! deve aggiornare gli indici. Durante questa operazione, si potrebbe ricevere un messaggio che segnala la presenza di nuove versioni degli strumenti utilizzati. \u00c8 possibile verificare quali versioni sono disponibili digitando <code>sdk ls<\/code>. Per <code>sdk ls maven<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Versioni di Maven disponibili\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\nversione locale\n\nattualmente in uso\n\n================================================================================<\/code><\/pre>\n\n\n\n<p>Come abbiamo visto sopra, Maven ha una versione pi\u00f9 recente di quella che utilizziamo. Lo stesso vale per <code>mvnd<\/code> (0.8.2) e Java (19-open). Aggiorniamo tutto. Per farlo, basta richiamare il comando install, ma in questo caso non usiamo uno specificatore di versione:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sdk installare maven\n\n$ sdk installare mvnd\n\n$ sdk installare java<\/code><\/pre>\n\n\n\n<p>Ma \u00e8 successo qualcosa di sbagliato. <code>Maven<\/code> e <code>mvnd<\/code> hanno versioni corrette, ma <strong>Java<\/strong> ha una versione <code>17.0.5-tem<\/code>. Questo perch\u00e9 la versione \"pi\u00f9 recente\" dello strumento \u00e8 controllata dal suo fornitore e non da SDKMAN! Chi \u00e8 questo fornitore? Un venditore in SDKMAN! \u00e8 qualcuno che pu\u00f2 pubblicare una versione. Tuttavia, diciamo che alla fine installiamo <code>19-aperto<\/code>e l'abbiamo reso predefinito, ma per qualche motivo dobbiamo usare <code>17-aperto<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versioni locali e gestione delle versioni per terminale<\/h3>\n\n\n\n<p>\u200b<br>Possiamo configurare un <code>predefinito<\/code> versione di uno strumento che \u00e8 globale per tutti i progetti e i terminali. Ma quando abbiamo bisogno di una versione specifica, abbiamo due modi per farlo. Il primo \u00e8 quello di utilizzare il file <code>sdk usa<\/code> ogni volta che si vuole usare una versione specifica di uno strumento nel terminale corrente. La seconda \u00e8 preparare un elenco di versioni in un file <code>.sdkmanrc<\/code> che viene memorizzato nel progetto.<\/p>\n\n\n\n<p>Mentre la prima opzione \u00e8 destinata all'uso singolo, la seconda \u00e8 stata progettata per lavorare con i team e condividere le configurazioni tra i vari gruppi. <a href=\"https:\/\/thecodest.co\/it\/dictionary\/how-to-lead-software-development-team\/\">squadra<\/a> membri.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pro e contro di SDKMAN!<\/h3>\n\n\n\n<p>SDKMAN! \u00e8 molto facile da usare e dispone di una ricca libreria di strumenti, framework e linguaggi supportati. Funziona su Linux, MacOS e Windows. D'altra parte, questo strumento \u00e8 incentrato sulla JVM e richiede l'accettazione dell'autore come fornitore. Inoltre, la meccanica di <code>.sdkmanrc<\/code> \u00e8 molto scarso e potrebbe rallentare notevolmente il processo di modifica delle directory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vorrei utilizzare molte altre lingue<\/h2>\n\n\n\n<p>Se avete bisogno di utilizzare molti linguaggi e strumenti, dovreste dare un'occhiata a <a href=\"https:\/\/asdf-vm.com\/\">asdf<\/a>. Questo strumento si concentra su strumenti di \"alto livello\". Mentre in SDKMAN! si possono trovare molti strumenti specifici per Java, come Bpipe o Znai, asdf offre molti pi\u00f9 strumenti, ma non cos\u00ec specifici. Naturalmente, alcuni di questi strumenti si sovrappongono, ad esempio Java, Tomcat o mvnd sono disponibili in entrambi.<\/p>\n\n\n\n<p>Quando si desidera utilizzare <code>asdf<\/code>\u00e8 necessario avere <code>git<\/code> e <code>ricciolo<\/code> installato. Dopodich\u00e9, \u00e8 sufficiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>clicca su https:\/\/github.com\/asdf-vm\/asdf.git ~\/.asdf --branch v0.10.2<\/code><\/code><\/pre>\n\n\n\n<p>e aggiungere queste righe in <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\/completamenti\/asdf.bash<\/code><\/pre>\n\n\n\n<p>Ora \u00e8 possibile installare plugin e strumenti nelle versioni preferite.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gestione basata su plugin<\/h3>\n\n\n\n<p>A differenza di SDKMAN! <code>asdf<\/code> utilizza i plugin per gestire gli strumenti. Quindi, prima di poter installare uno strumento, \u00e8 necessario installare un plugin. Torniamo al nostro progetto di esempio e proviamo a configurare l'ambiente usando <code>asadfsdf<\/code>.<\/p>\n\n\n\n<p>Per prima cosa, \u00e8 necessario installare i plugin:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">plugin asdf aggiungere java\n\nplugin asdf aggiungere maven\n\nplugin asdf aggiungere mvnd<\/code><\/pre>\n\n\n\n<p>Poi possiamo installare i nostri strumenti:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">asdf installa java openjdk-17\n\nasdf installa maven 3.8.4\n\nasdf installare mvnd 0.7.1<\/code><\/pre>\n\n\n\n<p>E ancora una volta, a differenza di SDKMAN! <code>asdf<\/code> non cambia nulla nel nostro ambiente. Quando proviamo a usare java, riceviamo un messaggio di errore del tipo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Non \u00e8 stata impostata alcuna versione per il comando Java\n\nConsiderare l'aggiunta di una delle seguenti versioni nel file di configurazione in ~\/.tool-versions\n\njava openjdk-17<\/code><\/pre>\n\n\n\n<p>Dobbiamo creare il file <code>.versioni degli strumenti<\/code> nella home directory per gestire le versioni predefinite.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versioni locali e globali<\/h3>\n\n\n\n<p>Aggiornamento delle versioni del software con <code>asdf<\/code> \u00e8 piuttosto semplice. Basta installare una nuova versione. Poich\u00e9 questo processo non influisce sull'ambiente, possiamo farlo in qualsiasi momento e in qualsiasi punto del file system. Quando vogliamo usare una versione specifica di un software, dobbiamo creare nella cartella del progetto una cartella <code>.versioni degli strumenti<\/code> che possono essere condivisi tra i membri del team. Ricordate che \u00e8 necessario garantire che tutti i membri del team abbiano <code>asdf<\/code> e i plugin installati. L'elenco dei plugin che si possono trovare <a href=\"https:\/\/github.com\/asdf-vm\/asdf-plugins\">qui<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conflitti di versione<\/h3>\n\n\n\n<p><code>asdf<\/code> non supporta solo linguaggi di programmazione, framework e strumenti come vim o kubernetess. Supporta anche i database. In questo caso, potremmo installare pi\u00f9 versioni di Postgres, ad esempio, ma solo un'istanza potrebbe essere eseguita. Questo perch\u00e9 <code>asdf<\/code> esegue i comandi direttamente sul sistema operativo senza alcun livello di separazione. Questo porta a problemi come \"porta gi\u00e0 in uso\" e conflitti sulle risorse.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pro e contro<\/h3>\n\n\n\n<p><code>asdf<\/code> \u00e8 un ottimo strumento se si desidera lavorare in un ambiente poliglotta. Supporta molti strumenti, linguaggi e framework. L'architettura basata su plugin rende molto semplice l'estensione. Tuttavia, alcuni degli strumenti presenti nella libreria richiedono un lavoro supplementare durante l'installazione per fornire tutte le dipendenze necessarie. <code>asdf<\/code> non funziona su Windows, nemmeno su <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_Subsystem_for_Linux\">WSL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ultimo ma non meno importante: Docker<\/h2>\n\n\n\n<p>Quando parlo del conflitto delle porte, molti di voi conoscono la soluzione.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.docker.com\/\">Docker<\/a> potrebbe aiutarci in alcuni casi. Ne parlo per dovere, perch\u00e9 questo strumento \u00e8 cos\u00ec grande e complesso che non possiamo parlarne in un solo articolo.<\/p>\n\n\n\n<p>Insieme a Docker, dovremmo usare un file <a href=\"https:\/\/docs.docker.com\/compose\/\">docker-compose<\/a> che ci d\u00e0 la possibilit\u00e0 di coordinare ambienti multi-contenitore.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pro e contro di Docker<\/h3>\n\n\n\n<p>Docker ci aiuta a gestire strumenti che necessitano di risorse specifiche, come porte o file. Separa le istanze in contenitori e ci d\u00e0 il pieno controllo su di esse. Tuttavia, Docker \u00e8 uno strumento che introduce molta complessit\u00e0 nel nostro ambiente di lavoro e in alcuni casi pu\u00f2 essere problematico. Uno di questi casi di utilizzo di Docker in un test \u00e8 descritto in uno dei nostri precedenti <a href=\"https:\/\/thecodest.co\/blog\/test-containers-how-to-make-tests-easier\">articolo<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Riassumendo<\/h2>\n\n\n\n<p>So che non ho descritto tutti gli strumenti che possono essere utilizzati per gestire le versioni degli strumenti. Ce ne sono molti altri, come <a href=\"https:\/\/www.jenv.be\/\">jEnv<\/a> che potrebbe sostituire SDKMAN,<\/p>\n\n\n\n<p>o <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">NVM<\/a> che possiamo usare per gestire npm o <a href=\"https:\/\/rvm.io\/\">RVM<\/a> per <a href=\"https:\/\/thecodest.co\/it\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Rubino<\/a>. Mi sono concentrato sugli strumenti che ho \"testato sul campo di battaglia\" e che posso consigliare a chiunque.<\/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>Esiste un modo per gestire un gran numero di ambienti su una sola macchina? Il nostro esperto Java Bart\u0142omiej conosce la risposta!<\/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\/it\/blog\/gestire-piu-ambienti-per-piu-progetti-su-ununica-macchina\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/blog\/gestire-piu-ambienti-per-piu-progetti-su-ununica-macchina\/\" \/>\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\":\"it-IT\",\"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\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@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\":\"it-IT\",\"@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\\\/it\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gestire pi\u00f9 ambienti per pi\u00f9 progetti su un'unica macchina? - The Codest","description":"Scoprite come gli sviluppatori possono gestire ambienti multipli per progetti diversi su un'unica macchina utilizzando i gestori di versione e la containerizzazione.","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\/it\/blog\/gestire-piu-ambienti-per-piu-progetti-su-ununica-macchina\/","og_locale":"it_IT","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\/it\/blog\/gestire-piu-ambienti-per-piu-progetti-su-ununica-macchina\/","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":"it-IT","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":"Gestire pi\u00f9 ambienti per pi\u00f9 progetti su un'unica macchina? - 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":"Scoprite come gli sviluppatori possono gestire ambienti multipli per progetti diversi su un'unica macchina utilizzando i gestori di versione e la containerizzazione.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@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":"it-IT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@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":"it-IT","@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\/it\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts\/3348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/comments?post=3348"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts\/3348\/revisions"}],"predecessor-version":[{"id":8550,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/posts\/3348\/revisions\/8550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/media\/3349"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/media?parent=3348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/categories?post=3348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/it\/wp-json\/wp\/v2\/tags?post=3348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}