{"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":"hantera-flera-miljoer-for-flera-projekt-pa-en-och-samma-maskin","status":"publish","type":"post","link":"https:\/\/thecodest.co\/sv\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","title":{"rendered":"Hantera flera milj\u00f6er f\u00f6r flera projekt p\u00e5 en och samma maskin?"},"content":{"rendered":"<p>L\u00e5t oss ta en titt p\u00e5 en typisk arbetsmilj\u00f6 i ett <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/how-to-choose-software-house\/\">programvaruhus<\/a>. Du har n\u00e5gra kunder som har olika milj\u00f6er. Vissa f\u00f6redrar MySQL, andra f\u00f6redrar Postgres. En version av din applikation beh\u00f6ver <a href=\"https:\/\/thecodest.co\/sv\/blog\/top-programming-languages-to-build-e-commerce\/\">Java<\/a> 11, och en annan Java 17. Frontend beh\u00f6ver npm 12 eller 16 eftersom du anv\u00e4nder olika versioner av <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/what-is-node-js-used-for-in-angular\/\">vinklad<\/a>. Slutligen har du den tredimensionella matrisen som inneh\u00e5ller kombinationer av alla dina DB-, backend- och frontend-versioner. L\u00e5ter illa, men en dag s\u00e4ger din chef...<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/comic.png\" alt=\"serier&lt;em&gt;med&lt;\/em&gt;boss\" title=\"n\u00e4r din chef s\u00e4ger...\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00f6tterna till en multiversum-milj\u00f6<\/h2>\n\n\n\n<p>Situationen som beskrivs ovan \u00e4r inte ovanlig. Migrering mellan spr\u00e5k- eller ramverksversioner, uppdateringar av databaser eller helt enkelt olika krav fr\u00e5n kunder kan v\u00e4nda upp och ner p\u00e5 alla konfigurationer. Vi borde ha en l\u00f6sning som hj\u00e4lper <a href=\"https:\/\/thecodest.co\/sv\/blog\/why-us-companies-are-opting-for-polish-developers\/\">oss<\/a> hantera dessa f\u00f6r\u00e4ndringar, en som matchar ett f\u00e5tal antaganden och\/eller krav och\/eller m\u00e5l:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b> l\u00e4tt att anv\u00e4nda<\/b> - ett enda kommando f\u00f6r att \u00e4ndra en konfiguration eller en version,<\/li>\n\n\n\n<li><b>rikt bibliotek<\/b> - b\u00f6r st\u00f6dja flera olika tekniker och \"saker\" (bibliotek, ramverk, appar),<\/li>\n\n\n\n<li><b> utdragbar<\/b> - du b\u00f6r erbjuda m\u00f6jligheten att l\u00e4gga till dina plugins.<\/li>\n<\/ul>\n\n\n\n<p>I den h\u00e4r artikeln kommer jag att fokusera p\u00e5 tre omr\u00e5den. Det f\u00f6rsta \u00e4r verktyg f\u00f6r Java och JVM. Det andra \u00e4r verktyg f\u00f6r allm\u00e4nna \u00e4ndam\u00e5l. Det tredje \u00e4r hur man anv\u00e4nder <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/docker-developer\/\">Docka<\/a> f\u00f6r att uppn\u00e5 v\u00e5ra m\u00e5l.<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jag \u00e4r Java och jag arbetar p\u00e5 JVM<\/h2>\n\n\n\n<p>N\u00e4r du \u00e4r en <strong><a href=\"https:\/\/thecodest.co\/sv\/dictionary\/java-developer\/\">Java-utvecklare<\/a><\/strong> eller, mer allm\u00e4nt, du arbetar med <strong>JVM-teknik<\/strong>d\u00e5 kan du anv\u00e4nda <a href=\"https:\/\/sdkman.io\/\">SDKMAN!<\/a>. Det h\u00e4r \u00e4r ett mycket trevligt och l\u00e4ttanv\u00e4nt verktyg som st\u00f6der m\u00e5nga bibliotek, ramverk och spr\u00e5k.<\/p>\n\n\n\n<p>Installationsprocessen f\u00f6r <strong>SDKMAN!<\/strong> Det \u00e4r ganska enkelt. Du m\u00e5ste k\u00f6ra:<\/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> &lt;\/code<\/pre>\n\n\n\n<p>och sedan<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code><code>k\u00e4lla \"$HOME\/.sdkman\/bin\/sdkman-init.sh\"<\/code><\/code> &lt;\/code<\/code> &lt;\/code<\/pre>\n\n\n\n<p>Nu kan du hantera dina <strong>Java<\/strong>, <strong>Scala<\/strong> och <strong>Maven<\/strong> versioner.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hantera versioner - exempel<\/h3>\n\n\n\n<p>I det h\u00e4r exemplet kommer vi att installera och uppdatera versionen av n\u00e5gra verktyg. Detta \u00e4r bara en liten delm\u00e4ngd av de tillg\u00e4ngliga verktygen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Installation<\/h3>\n\n\n\n<p>L\u00e5t oss anta att din nya <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/why-do-projects-fail\/\">projekt<\/a> anv\u00e4ndningsomr\u00e5den <strong>Java 17<\/strong>. Du har inte n\u00e5gon <strong>Java<\/strong> version installerad. Du vill installera den och dessutom l\u00e4gga till ett Maven Daemon-verktyg f\u00f6r att g\u00f6ra byggnaderna snabbare. S\u00e5 du m\u00e5ste ocks\u00e5 installera Maven. F\u00f6r att g\u00f6ra det m\u00e5ste du utf\u00f6ra tre enkla kommandon:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sdk installera java 17-\u00f6ppen\n\n$ sdk installera maven 3.8.4\n\n$ sdk installera mvnd 0.7.1<\/code><\/pre>\n\n\n\n<p>I slutet av installationen av varje verktyg f\u00e5r du en fr\u00e5ga om du vill g\u00f6ra det till standard:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>Vill du att Java 17-open ska st\u00e4llas in som standard? (J\/N):<\/code><\/code> &lt;\/code<\/pre>\n\n\n\n<p>Detta \u00e4r viktigt n\u00e4r du installerar en ny version av ett bibliotek eller ett spr\u00e5k, eftersom SDKMAN! kommer att st\u00e4lla in standardversionen som global f\u00f6r alla terminaler f\u00f6r den aktuella anv\u00e4ndaren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kontroll av versioner och uppdatering<\/h3>\n\n\n\n<p>Fr\u00e5n tid till annan beh\u00f6ver SDKMAN! uppdatera index. Under detta kan du f\u00e5 ett meddelande om att det finns n\u00e5gra nya versioner av verktyg som du anv\u00e4nder. Vi kan kontrollera vilka versioner som finns tillg\u00e4ngliga genom att skriva <code>sdk ls<\/code>. F\u00f6r <code>sdk ls maven<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Tillg\u00e4ngliga Maven-versioner\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\nlokal version\n\nanv\u00e4nds f\u00f6r n\u00e4rvarande\n\n================================================================================<\/code><\/pre>\n\n\n\n<p>Som vi ser ovan har Maven en nyare version \u00e4n den vi anv\u00e4nder. Detsamma g\u00e4ller f\u00f6r <code>mvnd<\/code> (0.8.2) och Java (19-open). L\u00e5t oss uppdatera allt. F\u00f6r att g\u00f6ra det beh\u00f6ver vi bara anropa kommandot install, men den h\u00e4r g\u00e5ngen anv\u00e4nder vi inte en versionsspecifikator:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ sdk installera maven\n\n$ sdk installera mvnd\n\n$ sdk installera java<\/code><\/pre>\n\n\n\n<p>Men n\u00e5got fel intr\u00e4ffade. <code>Maven<\/code> och <code>mvnd<\/code> har korrekta versioner, men <strong>Java<\/strong> har version <code>17.0.5-tem<\/code>. Det beror p\u00e5 att \"den nyaste\" versionen av verktyget kontrolleras av dess leverant\u00f6r, inte av SDKMAN! Vem \u00e4r denna leverant\u00f6r? En leverant\u00f6r i SDKMAN! \u00e4r n\u00e5gon som kan publicera en version. Men l\u00e5t oss s\u00e4ga att vi \u00e4ntligen installerar <code>19-\u00f6ppen<\/code>och vi gjorde det till standard, men av n\u00e5gon anledning beh\u00f6ver vi anv\u00e4nda <code>17-\u00f6ppen<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lokala versioner och versionshantering per terminal<\/h3>\n\n\n\n<p>\u200b<br>Vi kan konfigurera en <code>standard<\/code> version av ett verktyg som \u00e4r global f\u00f6r alla projekt och terminaler. Men n\u00e4r vi beh\u00f6ver en specifik version har vi tv\u00e5 s\u00e4tt att g\u00f6ra det p\u00e5. Det f\u00f6rsta \u00e4r att anv\u00e4nda <code>sdk-anv\u00e4ndning<\/code> kommandot varje g\u00e5ng vi vill anv\u00e4nda en specifik version av ett verktyg i den aktuella terminalen. Det andra \u00e4r att f\u00f6rbereda en versionslista i en <code>.sdkmanrc<\/code> fil som lagras tillsammans med projektet.<\/p>\n\n\n\n<p>Det f\u00f6rsta alternativet \u00e4r f\u00f6r eng\u00e5ngsbruk, medan det andra \u00e4r utformat f\u00f6r att arbeta med team och dela konfigurationer mellan <a href=\"https:\/\/thecodest.co\/sv\/dictionary\/how-to-lead-software-development-team\/\">Team<\/a> medlemmar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">F\u00f6r- och nackdelar med SDKMAN!<\/h3>\n\n\n\n<p>SDKMAN! \u00e4r mycket l\u00e4tt att anv\u00e4nda och har ett rikt bibliotek med verktyg, ramverk och spr\u00e5k som st\u00f6ds. Det fungerar p\u00e5 Linux, MacOS och Windows. \u00c5 andra sidan \u00e4r detta verktyg JVM-fokuserat och kr\u00e4ver f\u00f6rfattarens acceptans f\u00f6r att vara en leverant\u00f6r. Dessutom \u00e4r mekanikern i <code>.sdkmanrc<\/code> \u00e4r mycket d\u00e5lig och kan avsev\u00e4rt f\u00f6rdr\u00f6ja processen med att byta kataloger.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jag skulle vilja anv\u00e4nda m\u00e5nga andra spr\u00e5k<\/h2>\n\n\n\n<p>Om du beh\u00f6ver anv\u00e4nda m\u00e5nga spr\u00e5k och verktyg b\u00f6r du ta en titt p\u00e5 <a href=\"https:\/\/asdf-vm.com\/\">asdf<\/a>. Detta verktyg \u00e4r inriktat p\u00e5 verktyg p\u00e5 \"h\u00f6g niv\u00e5\". Medan du i SDKMAN! kan hitta m\u00e5nga Java-specifika verktyg, som Bpipe eller Znai, erbjuder asdf mycket fler verktyg men inte s\u00e5 specifika. Naturligtvis \u00f6verlappar vissa av dessa verktyg varandra, t.ex. Java, Tomcat eller mvnd finns tillg\u00e4ngliga i b\u00e5da.<\/p>\n\n\n\n<p>N\u00e4r du vill anv\u00e4nda <code>asdf<\/code>beh\u00f6ver du ha <code>git<\/code> och <code>krulla<\/code> installerad. Efter det \u00e4r det bara att..:<\/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> &lt;\/code<\/pre>\n\n\n\n<p>och l\u00e4gg till dessa rader i <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\/kompletteringar\/asdf.bash<\/code><\/pre>\n\n\n\n<p>Nu kan du installera plugins och verktyg i dina favoritversioner.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Plugin-baserad hantering<\/h3>\n\n\n\n<p>Till skillnad fr\u00e5n SDKMAN! <code>asdf<\/code> anv\u00e4nder plugins f\u00f6r att hantera verktyg. S\u00e5 innan du kan installera ett verktyg m\u00e5ste du installera ett plugin. L\u00e5t oss g\u00e5 tillbaka till v\u00e5rt exempelprojekt och f\u00f6rs\u00f6ka konfigurera milj\u00f6n med hj\u00e4lp av <code>asadfsdf<\/code>.<\/p>\n\n\n\n<p>F\u00f6rst m\u00e5ste vi installera plugins:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">asdf plugin add java\n\nasdf plugin l\u00e4gga till maven\n\nasdf plugin add mvnd<\/code><\/pre>\n\n\n\n<p>Sedan kan vi installera v\u00e5ra verktyg:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">asdf installera java openjdk-17\n\nasdf installera maven 3.8.4\n\nasdf installera mvnd 0.7.1<\/code><\/pre>\n\n\n\n<p>Och \u00e4n en g\u00e5ng, till skillnad fr\u00e5n SDKMAN! <code>asdf<\/code> \u00e4ndrar ingenting i v\u00e5r milj\u00f6. N\u00e4r vi f\u00f6rs\u00f6ker anv\u00e4nda java f\u00e5r vi ett felmeddelande som:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Ingen version har angetts f\u00f6r kommandot Java\n\n\u00d6verv\u00e4g att l\u00e4gga till n\u00e5gon av f\u00f6ljande versioner i din konfigurationsfil i ~\/.tool-versions\n\njava openjdk-17<\/code><\/pre>\n\n\n\n<p>Vi m\u00e5ste skapa filen <code>.verktygs-versioner<\/code> i hemkatalogen f\u00f6r att hantera standardversioner.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lokala och globala versioner<\/h3>\n\n\n\n<p>Uppdatering av programvaruversioner med <code>asdf<\/code> \u00e4r ganska enkelt. Vi installerar bara en ny version. Eftersom den h\u00e4r processen inte p\u00e5verkar milj\u00f6n kan vi g\u00f6ra det n\u00e4r som helst och var som helst i filsystemet. N\u00e4r vi vill anv\u00e4nda en specifik version av n\u00e5gon programvara m\u00e5ste vi i projektkatalogen skapa en <code>.verktygs-versioner<\/code> fil som kan delas mellan teammedlemmarna. Kom ih\u00e5g att du m\u00e5ste garantera att alla teammedlemmar har <code>asdf<\/code> och plugins installerade. Listan \u00f6ver plugins som du kan hitta <a href=\"https:\/\/github.com\/asdf-vm\/asdf-plugins\">h\u00e4r<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Versionskonflikter<\/h3>\n\n\n\n<p><code>asdf<\/code> st\u00f6der inte bara programmeringsspr\u00e5k, ramverk och verktyg som vim eller kubernetess. Den st\u00f6der \u00e4ven databaser. I ett s\u00e5dant fall skulle vi kunna installera flera versioner av t.ex. Postgres, men bara en instans skulle kunna k\u00f6ras. Det beror p\u00e5 att <code>asdf<\/code> k\u00f6r kommandon direkt p\u00e5 ditt operativsystem utan n\u00e5got separationslager. Det leder till problem som \"port redan i bruk\" och konflikter om resurser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">F\u00f6r- och nackdelar<\/h3>\n\n\n\n<p><code>asdf<\/code> \u00e4r ett mycket bra verktyg om du vill arbeta i en polyglott milj\u00f6. Det st\u00f6der m\u00e5nga verktyg, spr\u00e5k och ramverk. Den plugin-baserade arkitekturen g\u00f6r det mycket enkelt att ut\u00f6ka detta. Vissa av de verktyg som finns i biblioteket kr\u00e4ver dock extra arbete under installationen f\u00f6r att tillhandah\u00e5lla alla n\u00f6dv\u00e4ndiga beroenden. <code>asdf<\/code> fungerar inte p\u00e5 Windows, inte ens p\u00e5 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_Subsystem_for_Linux\">WSL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sist men inte minst - Docker<\/h2>\n\n\n\n<p>N\u00e4r jag talar om hamnkonflikten ovan k\u00e4nner m\u00e5nga av er till l\u00f6sningen.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.docker.com\/\">Docka<\/a> kan hj\u00e4lpa oss i vissa fall. Jag n\u00e4mner det av plikt, eftersom det h\u00e4r verktyget \u00e4r s\u00e5 stort och komplext att vi inte kan diskutera det i en artikel.<\/p>\n\n\n\n<p>Tillsammans med Docker b\u00f6r vi anv\u00e4nda en <a href=\"https:\/\/docs.docker.com\/compose\/\">docker-compose<\/a> verktyg som ger oss m\u00f6jlighet att samordna milj\u00f6er med flera containrar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">F\u00f6r- och nackdelar med Docker<\/h3>\n\n\n\n<p>Docker hj\u00e4lper oss att hantera verktyg som beh\u00f6ver vissa specifika resurser, som portar eller filer. Det separerar instanser i containrar och ger oss full kontroll \u00f6ver dem. Docker \u00e4r dock ett verktyg som g\u00f6r v\u00e5r arbetsmilj\u00f6 mycket komplex och som kan vara problematiskt i vissa fall. Ett av dessa fall av att anv\u00e4nda Docker i ett test beskrivs i ett av v\u00e5ra tidigare <a href=\"https:\/\/thecodest.co\/blog\/test-containers-how-to-make-tests-easier\">artikel<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammanfattningsvis<\/h2>\n\n\n\n<p>Jag vet att jag inte har beskrivit alla verktyg som kan anv\u00e4ndas f\u00f6r att hantera verktygsversioner. Det finns m\u00e5nga fler av dem, till exempel <a href=\"https:\/\/www.jenv.be\/\">jEnv<\/a> som kan ers\u00e4tta SDKMAN,<\/p>\n\n\n\n<p>eller <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">NVM<\/a> som vi kan anv\u00e4nda f\u00f6r att hantera npm eller <a href=\"https:\/\/rvm.io\/\">RVM<\/a> f\u00f6r <a href=\"https:\/\/thecodest.co\/sv\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a>. Jag fokuserade p\u00e5 verktyg som jag \"testat p\u00e5 slagf\u00e4ltet\" och som jag kan rekommendera till alla.<\/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>Finns det en gyllene medelv\u00e4g f\u00f6r att hantera m\u00e5nga milj\u00f6er f\u00f6r ett stort antal p\u00e5 bara en maskin? V\u00e5r Java-expert Bart\u0142omiej vet svaret!<\/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\/sv\/blogg\/hantera-flera-miljoer-for-flera-projekt-pa-en-och-samma-maskin\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/blogg\/hantera-flera-miljoer-for-flera-projekt-pa-en-och-samma-maskin\/\" \/>\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\":\"sv-SE\",\"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\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@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\":\"sv-SE\",\"@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\\\/sv\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hantera flera milj\u00f6er f\u00f6r flera projekt p\u00e5 en och samma maskin? - The Codest","description":"Uppt\u00e4ck hur utvecklare kan hantera flera milj\u00f6er f\u00f6r olika projekt p\u00e5 en enda maskin med hj\u00e4lp av versionshanterare och containerisering.","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\/sv\/blogg\/hantera-flera-miljoer-for-flera-projekt-pa-en-och-samma-maskin\/","og_locale":"sv_SE","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\/sv\/blogg\/hantera-flera-miljoer-for-flera-projekt-pa-en-och-samma-maskin\/","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":"sv-SE","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":"Hantera flera milj\u00f6er f\u00f6r flera projekt p\u00e5 en och samma maskin? - 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":"Uppt\u00e4ck hur utvecklare kan hantera flera milj\u00f6er f\u00f6r olika projekt p\u00e5 en enda maskin med hj\u00e4lp av versionshanterare och containerisering.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@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":"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":"sv-SE"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@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":"sv-SE","@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\/sv\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/comments?post=3348"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3348\/revisions"}],"predecessor-version":[{"id":8550,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/posts\/3348\/revisions\/8550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media\/3349"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/media?parent=3348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/categories?post=3348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/sv\/wp-json\/wp\/v2\/tags?post=3348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}