{"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":"gestionar-varios-entornos-para-varios-proyectos-en-una-sola-maquina","status":"publish","type":"post","link":"https:\/\/thecodest.co\/es\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","title":{"rendered":"\u00bfManejar varios entornos para varios proyectos en una sola m\u00e1quina?"},"content":{"rendered":"<p>Echemos un vistazo a un entorno de trabajo t\u00edpico en un <a href=\"https:\/\/thecodest.co\/es\/dictionary\/how-to-choose-software-house\/\">empresa de software<\/a>. Tiene varios clientes con entornos diferentes. Algunos prefieren MySQL, otros Postgres. Una versi\u00f3n de su aplicaci\u00f3n necesita <a href=\"https:\/\/thecodest.co\/es\/blog\/top-programming-languages-to-build-e-commerce\/\">Java<\/a> 11, y otra Java 17. Frontend necesita npm 12 o 16 porque utiliza diferentes versiones de <a href=\"https:\/\/thecodest.co\/es\/dictionary\/what-is-node-js-used-for-in-angular\/\">angular<\/a>. Finalmente, tienes ese array tridimensional que contiene combinaciones de todas tus DBs, backend, y versiones frontend. Suena mal, pero un d\u00eda tu jefe dice...<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/comic.png\" alt=\"c\u00f3mics&lt;em&gt;con&lt;\/em&gt;jefe\" title=\"cuando tu jefe dice...\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ra\u00edces de un entorno multiversal<\/h2>\n\n\n\n<p>La situaci\u00f3n descrita anteriormente no es algo infrecuente. Migraciones entre versiones de lenguajes o frameworks, actualizaciones de bases de datos o simplemente diferentes requerimientos provenientes de los clientes pueden poner patas arriba todas las configuraciones. Debemos tener una soluci\u00f3n que ayude a <a href=\"https:\/\/thecodest.co\/es\/blog\/why-us-companies-are-opting-for-polish-developers\/\">us<\/a> gestionar esos cambios, uno que se ajuste a unos cuantos supuestos y\/o requisitos y\/o objetivos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b> f\u00e1cil de usar<\/b> - comando \u00fanico para cambiar una configuraci\u00f3n o una versi\u00f3n,<\/li>\n\n\n\n<li><b>rica biblioteca<\/b> - debe ser compatible con m\u00faltiples tecnolog\u00edas y \"cosas\" (bibliotecas, marcos de trabajo, aplicaciones),<\/li>\n\n\n\n<li><b> extensible<\/b> - deber\u00eda ofrecer la posibilidad de a\u00f1adir sus plugins.<\/li>\n<\/ul>\n\n\n\n<p>En este art\u00edculo, me centrar\u00e9 en tres \u00e1reas. La primera son las herramientas para Java y JVM. La segunda son las herramientas de uso general. La tercera es c\u00f3mo utilizar <a href=\"https:\/\/thecodest.co\/es\/dictionary\/docker-developer\/\">docker<\/a> para alcanzar nuestros objetivos.<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Soy Java y trabajo en JVM<\/h2>\n\n\n\n<p>Cuando eres un <strong><a href=\"https:\/\/thecodest.co\/es\/dictionary\/java-developer\/\">Desarrollador Java<\/a><\/strong> o, de forma m\u00e1s general, trabaja con <strong>Tecnolog\u00edas JVM<\/strong>puede utilizar <a href=\"https:\/\/sdkman.io\/\">\u00a1SDKMAN!<\/a>. Se trata de una herramienta muy agradable y f\u00e1cil de usar que admite muchas bibliotecas, marcos de trabajo y lenguajes.<\/p>\n\n\n\n<p>El proceso de instalaci\u00f3n de <strong>\u00a1SDKMAN!<\/strong> Es bastante sencillo. Tienes que correr:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">curl -s \"https:\/\/get.sdkman.io\" | bash<\/code><\/code><\/pre>\n\n\n\n<p>y luego<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">source \"$HOME\/.sdkman\/bin\/sdkman-init.sh\"<\/code><\/code><\/code><\/pre>\n\n\n\n<p>Ahora puedes gestionar tu <strong>Java<\/strong>, <strong>Scala<\/strong> y <strong>Maven<\/strong> versiones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gesti\u00f3n de versiones - ejemplo<\/h3>\n\n\n\n<p>En este ejemplo, instalaremos y actualizaremos la versi\u00f3n de unas pocas herramientas. Esto es s\u00f3lo un peque\u00f1o subconjunto de las herramientas disponibles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instalaci\u00f3n<\/h3>\n\n\n\n<p>Supongamos que su nuevo <a href=\"https:\/\/thecodest.co\/es\/dictionary\/why-do-projects-fail\/\">proyecto<\/a> utiliza <strong>Java 17<\/strong>. Usted no tiene ning\u00fan <strong>Java<\/strong> instalada. Quieres instalarla y, adem\u00e1s, a\u00f1adir una herramienta Maven Daemon para hacer las construcciones m\u00e1s r\u00e1pidas. Por lo tanto, es necesario instalar Maven, tambi\u00e9n. Para ello, es necesario ejecutar tres comandos 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>Al final de la instalaci\u00f3n de cada herramienta, se le preguntar\u00e1 si desea convertirla en predeterminada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>\u00bfDesea que Java 17-open se establezca como predeterminado? (S\/n):<\/code><\/code><\/pre>\n\n\n\n<p>Esto es importante cuando se instala una nueva versi\u00f3n de una librer\u00eda o de un lenguaje, ya que SDKMAN! establecer\u00e1 esa versi\u00f3n por defecto como global para todos los terminales del usuario actual.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comprobaci\u00f3n de versiones y actualizaci\u00f3n<\/h3>\n\n\n\n<p>De vez en cuando, SDKMAN! necesita actualizar los \u00edndices. Durante este proceso, es posible que reciba un mensaje indic\u00e1ndole que hay nuevas versiones de las herramientas que utiliza. Podemos comprobar qu\u00e9 versiones est\u00e1n disponibles escribiendo <code>sdk ls<\/code>. Para <code>sdk ls maven<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Versiones 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\nversi\u00f3n local\n\nactualmente en uso\n\n================================================================================<\/code><\/pre>\n\n\n\n<p>Como vemos arriba, Maven tiene una versi\u00f3n m\u00e1s nueva que la que usamos. Lo mismo ocurre con <code>mvnd<\/code> (0.8.2) y Java (19-open). Vamos a actualizarlo todo. Para ello, s\u00f3lo tenemos que llamar al comando install pero en esta ocasi\u00f3n, no utilizamos un especificador de versi\u00f3n:<\/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>Pero algo malo ocurri\u00f3. <code>Maven<\/code> y <code>mvnd<\/code> tienen versiones correctas, pero <strong>Java<\/strong> tiene versi\u00f3n <code>17.0.5-tem<\/code>. Esto se debe a que \"la versi\u00f3n m\u00e1s reciente\" de la herramienta est\u00e1 controlada por su proveedor y no por SDKMAN! \u00bfQui\u00e9n es este proveedor? Un vendedor en SDKMAN! es alguien que puede publicar una versi\u00f3n. Sin embargo, digamos que finalmente instalamos <code>19-abierto<\/code>y lo hicimos por defecto, pero por alguna raz\u00f3n, necesitamos usar <code>17-abierto<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versiones locales y gesti\u00f3n de versiones por terminal<\/h3>\n\n\n\n<p>\u200b<br>Podemos configurar un <code>por defecto<\/code> versi\u00f3n de una herramienta que es global para todos los proyectos y terminales. Pero cuando necesitamos una versi\u00f3n espec\u00edfica, tenemos dos formas de hacerlo. La primera es utilizar el <code>sdk use<\/code> cada vez que queramos utilizar una versi\u00f3n espec\u00edfica de una herramienta en el terminal actual. La segunda es preparar una lista de versiones en un <code>.sdkmanrc<\/code> que se almacena con el proyecto.<\/p>\n\n\n\n<p>Mientras que la primera opci\u00f3n es de uso individual, la segunda est\u00e1 pensada para trabajar en equipo y compartir configuraciones entre <a href=\"https:\/\/thecodest.co\/es\/dictionary\/how-to-lead-software-development-team\/\">equipo<\/a> miembros.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ventajas e inconvenientes de SDKMAN<\/h3>\n\n\n\n<p>SDKMAN! es muy f\u00e1cil de usar y cuenta con una rica biblioteca de herramientas, marcos de trabajo y lenguajes compatibles. Funciona en Linux, MacOS y Windows. Por otro lado, esta herramienta est\u00e1 centrada en JVM y requiere la aceptaci\u00f3n del autor para ser proveedor. Adem\u00e1s, la mec\u00e1nica de <code>.sdkmanrc<\/code> es muy pobre y podr\u00eda ralentizar considerablemente el proceso de cambio de directorios.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Me gustar\u00eda utilizar muchas otras lenguas<\/h2>\n\n\n\n<p>Si necesita utilizar muchos idiomas y herramientas, deber\u00eda echar un vistazo a <a href=\"https:\/\/asdf-vm.com\/\">asdf<\/a>. Esta herramienta se centra en herramientas de \"alto nivel\". Mientras que en SDKMAN! puedes encontrar muchas herramientas espec\u00edficas para Java, como Bpipe o Znai, asdf ofrece muchas m\u00e1s herramientas pero no tan espec\u00edficas. Por supuesto, algunas de esas herramientas se solapan, por ejemplo Java, Tomcat o mvnd est\u00e1n disponibles en ambas.<\/p>\n\n\n\n<p>Cuando desee utilizar <code>asdf<\/code>necesita tener <code>git<\/code> y <code>rizo<\/code> instalado. Despu\u00e9s de eso, s\u00f3lo:<\/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>y a\u00f1ade estas l\u00edneas en <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>Ahora puedes instalar plugins y herramientas en tus versiones favoritas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gesti\u00f3n basada en plugins<\/h3>\n\n\n\n<p>A diferencia de SDKMAN!, <code>asdf<\/code> utiliza plugins para gestionar las herramientas. Por lo tanto, antes de poder instalar una herramienta, es necesario instalar un plugin. Volvamos a nuestro proyecto de ejemplo e intentemos configurar el entorno utilizando <code>asadfsdf<\/code>.<\/p>\n\n\n\n<p>En primer lugar, tenemos que instalar 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>Entonces podremos instalar nuestras herramientas:<\/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>Y una vez m\u00e1s, a diferencia de SDKMAN!, <code>asdf<\/code> no cambia nada en nuestro entorno. Cuando tratamos de usar java, obtenemos un mensaje de error como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">No hay versi\u00f3n para el comando Java\n\nConsidere a\u00f1adir una de las siguientes versiones en su archivo de configuraci\u00f3n en ~\/.tool-versions\n\njava openjdk-17<\/code><\/pre>\n\n\n\n<p>Necesitamos crear el archivo <code>.versiones-herramienta<\/code> en el directorio de inicio para gestionar las versiones por defecto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versiones local y global<\/h3>\n\n\n\n<p>Actualizaci\u00f3n de versiones de software con <code>asdf<\/code> es bastante simple. Simplemente instalamos una nueva versi\u00f3n. Como este proceso no afecta al entorno, podr\u00edamos hacerlo en cualquier momento y en cualquier lugar del sistema de archivos. Cuando queremos utilizar una versi\u00f3n espec\u00edfica de alg\u00fan software, necesitamos crear en el directorio del proyecto un archivo <code>.versiones-herramienta<\/code> que puedan compartir los miembros del equipo. Recuerde que debe garantizar que todos los miembros del equipo tienen <code>asdf<\/code> y plugins instalados. La lista de plugins que puedes encontrar <a href=\"https:\/\/github.com\/asdf-vm\/asdf-plugins\">aqu\u00ed<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Conflictos de versi\u00f3n<\/h3>\n\n\n\n<p><code>asdf<\/code> no s\u00f3lo soporta lenguajes de programaci\u00f3n, frameworks y herramientas como vim o kubernetess. Tambi\u00e9n soporta bases de datos. En tal caso, podr\u00edamos instalar varias versiones de, por ejemplo, Postgres, pero s\u00f3lo podr\u00eda ejecutarse una instancia. Esto se debe a que <code>asdf<\/code> ejecuta comandos directamente en tu sistema operativo sin ninguna capa de separaci\u00f3n. Esto conlleva problemas como \"puerto ya en uso\" y conflictos de recursos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ventajas e inconvenientes<\/h3>\n\n\n\n<p><code>asdf<\/code> es una herramienta muy buena si quieres trabajar en un entorno pol\u00edglota. Soporta muchas herramientas, lenguajes y frameworks. Su arquitectura basada en plugins hace que sea muy f\u00e1cil ampliarla. Sin embargo, algunas de las herramientas que tiene en la biblioteca necesitan un trabajo adicional durante la instalaci\u00f3n para proporcionar todas las dependencias necesarias. <code>asdf<\/code> no funciona en Windows, ni siquiera en <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_Subsystem_for_Linux\">WSL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por \u00faltimo, pero no por ello menos importante: Docker<\/h2>\n\n\n\n<p>Cuando hablo del conflicto portuario m\u00e1s arriba, muchos de ustedes conocen la soluci\u00f3n.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.docker.com\/\">Docker<\/a> podr\u00eda ayudarnos en algunos casos. Lo menciono por obligaci\u00f3n, porque esta herramienta es tan grande y compleja que no podemos hablar de ella en un solo art\u00edculo.<\/p>\n\n\n\n<p>Junto con Docker, deber\u00edamos utilizar un <a href=\"https:\/\/docs.docker.com\/compose\/\">docker-compose<\/a> que nos da la posibilidad de coordinar entornos multicontenedor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ventajas e inconvenientes de Docker<\/h3>\n\n\n\n<p>Docker nos ayuda a gestionar herramientas que necesitan algunos recursos espec\u00edficos, como puertos o archivos. Separa instancias en contenedores y nos da un control total sobre ellas. Sin embargo, Docker es una herramienta que introduce mucha complejidad en nuestro entorno de trabajo y puede ser problem\u00e1tica en algunos casos. Uno de esos casos de uso de Docker en una prueba se describe en uno de nuestros anteriores <a href=\"https:\/\/thecodest.co\/blog\/test-containers-how-to-make-tests-easier\">art\u00edculo<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resumen<\/h2>\n\n\n\n<p>S\u00e9 que no he descrito todas las herramientas que se pueden utilizar para gestionar las versiones de las herramientas. Hay muchas m\u00e1s, como <a href=\"https:\/\/www.jenv.be\/\">jEnv<\/a> que podr\u00eda sustituir a SDKMAN,<\/p>\n\n\n\n<p>o <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">NVM<\/a> que podemos utilizar para gestionar npm o <a href=\"https:\/\/rvm.io\/\">RVM<\/a> para <a href=\"https:\/\/thecodest.co\/es\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a>. Me he centrado en herramientas que he \"probado en el campo de batalla\" y que puedo recomendar a cualquiera.<\/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>Hay un medio de oro para manejar muchos entornos para un gran n\u00famero en una sola m\u00e1quina? \u00a1Nuestro experto en Java Bart\u0142omiej conoce la respuesta!<\/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\/es\/blog\/gestionar-varios-entornos-para-varios-proyectos-en-una-sola-maquina\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/blog\/gestionar-varios-entornos-para-varios-proyectos-en-una-sola-maquina\/\" \/>\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\":\"es-ES\",\"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\":\"es-ES\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@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\":\"es-ES\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-ES\",\"@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\":\"es-ES\",\"@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\\\/es\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u00bfManejar m\u00faltiples entornos para m\u00faltiples proyectos en una sola m\u00e1quina? - The Codest","description":"Descubra c\u00f3mo los desarrolladores pueden manejar m\u00faltiples entornos para diferentes proyectos en una sola m\u00e1quina utilizando gestores de versiones y la contenedorizaci\u00f3n.","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\/es\/blog\/gestionar-varios-entornos-para-varios-proyectos-en-una-sola-maquina\/","og_locale":"es_ES","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\/es\/blog\/gestionar-varios-entornos-para-varios-proyectos-en-una-sola-maquina\/","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":"es-ES","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":"\u00bfManejar m\u00faltiples entornos para m\u00faltiples proyectos en una sola m\u00e1quina? - 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":"Descubra c\u00f3mo los desarrolladores pueden manejar m\u00faltiples entornos para diferentes proyectos en una sola m\u00e1quina utilizando gestores de versiones y la contenedorizaci\u00f3n.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#breadcrumb"},"inLanguage":"es-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"]}]},{"@type":"ImageObject","inLanguage":"es-ES","@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":"es-ES"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"es-ES","@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":"es-ES","@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\/es\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/comments?post=3348"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3348\/revisions"}],"predecessor-version":[{"id":8550,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/posts\/3348\/revisions\/8550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media\/3349"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/media?parent=3348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/categories?post=3348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/es\/wp-json\/wp\/v2\/tags?post=3348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}