{"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":"zvladnout-vice-prostredi-pro-vice-projektu-na-jednom-pocitaci","status":"publish","type":"post","link":"https:\/\/thecodest.co\/cs\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/","title":{"rendered":"Zvl\u00e1dnout v\u00edce prost\u0159ed\u00ed pro v\u00edce projekt\u016f na jednom po\u010d\u00edta\u010di?"},"content":{"rendered":"<p>Pod\u00edvejme se na typick\u00e9 pracovn\u00ed prost\u0159ed\u00ed ve firm\u011b. <a href=\"https:\/\/thecodest.co\/cs\/dictionary\/how-to-choose-software-house\/\">softwarov\u00fd d\u016fm<\/a>. M\u00e1te n\u011bkolik z\u00e1kazn\u00edk\u016f, kte\u0159\u00ed maj\u00ed r\u016fzn\u00e1 prost\u0159ed\u00ed. N\u011bkte\u0159\u00ed preferuj\u00ed MySQL, jin\u00ed Postgres. Jedna verze va\u0161\u00ed aplikace pot\u0159ebuje <a href=\"https:\/\/thecodest.co\/cs\/blog\/top-programming-languages-to-build-e-commerce\/\">Java<\/a> 11 a dal\u0161\u00ed Java 17. Frontend pot\u0159ebuje npm 12 nebo 16, proto\u017ee pou\u017e\u00edv\u00e1te r\u016fzn\u00e9 verze <a href=\"https:\/\/thecodest.co\/cs\/dictionary\/what-is-node-js-used-for-in-angular\/\">\u00fahlov\u00e9<\/a>. Nakonec m\u00e1te trojrozm\u011brn\u00e9 pole, kter\u00e9 obsahuje kombinace v\u0161ech va\u0161ich DB, verz\u00ed backendu a frontendu. Zn\u00ed to \u0161patn\u011b, ale jednoho dne v\u00e1m \u0161\u00e9f \u0159ekne...<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/comic.png\" alt=\"komiksy&lt;em&gt;se&lt;\/em&gt; \u0161\u00e9fem\" title=\"kdy\u017e v\u00e1\u0161 \u0161\u00e9f \u0159ekne...\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ko\u0159eny prost\u0159ed\u00ed multiverza<\/h2>\n\n\n\n<p>V\u00fd\u0161e popsan\u00e1 situace nen\u00ed ni\u010d\u00edm neobvykl\u00fdm. Migrace mezi verzemi jazyk\u016f nebo framework\u016f, aktualizace datab\u00e1z\u00ed nebo jednodu\u0161e odli\u0161n\u00e9 po\u017eadavky z\u00e1kazn\u00edk\u016f mohou p\u0159evr\u00e1tit naruby v\u0161echny konfigurace. M\u011bli bychom m\u00edt \u0159e\u0161en\u00ed, kter\u00e9 pom\u016f\u017ee <a href=\"https:\/\/thecodest.co\/cs\/blog\/why-us-companies-are-opting-for-polish-developers\/\">n\u00e1s<\/a> \u0159\u00eddit tyto zm\u011bny, kter\u00fd odpov\u00edd\u00e1 n\u011bkolika p\u0159edpoklad\u016fm a\/nebo po\u017eadavk\u016fm a\/nebo c\u00edl\u016fm:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b> snadn\u00e9 pou\u017eit\u00ed<\/b> - jedin\u00fd p\u0159\u00edkaz pro zm\u011bnu konfigurace nebo verze,<\/li>\n\n\n\n<li><b>bohat\u00e1 knihovna<\/b> - by m\u011bl podporovat v\u00edce technologi\u00ed a \"v\u011bc\u00ed\" (knihovny, frameworky, aplikace),<\/li>\n\n\n\n<li><b> roz\u0161i\u0159iteln\u00fd<\/b> - m\u011bli byste nab\u00eddnout mo\u017enost p\u0159idat sv\u00e9 z\u00e1suvn\u00e9 moduly.<\/li>\n<\/ul>\n\n\n\n<p>V tomto \u010dl\u00e1nku se zam\u011b\u0159\u00edm na t\u0159i oblasti. Prvn\u00ed oblast\u00ed jsou n\u00e1stroje pro Javu a JVM. Druhou jsou n\u00e1stroje pro obecn\u00e9 pou\u017eit\u00ed. T\u0159et\u00ed je zp\u016fsob pou\u017eit\u00ed <a href=\"https:\/\/thecodest.co\/cs\/dictionary\/docker-developer\/\">docker<\/a> k dosa\u017een\u00ed na\u0161ich c\u00edl\u016f.<\/p>\n\n\n\n<p>\u200b<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jsem Java a pracuji na JVM<\/h2>\n\n\n\n<p>Kdy\u017e jste <strong><a href=\"https:\/\/thecodest.co\/cs\/dictionary\/java-developer\/\">V\u00fdvoj\u00e1\u0159 v jazyce Java<\/a><\/strong> nebo obecn\u011bji pracujete s <strong>Technologie JVM<\/strong>, pak m\u016f\u017eete pou\u017e\u00edt <a href=\"https:\/\/sdkman.io\/\">SDKMAN!<\/a>. Jedn\u00e1 se o velmi p\u011bkn\u00fd a snadno pou\u017eiteln\u00fd n\u00e1stroj, kter\u00fd podporuje mnoho knihoven, framework\u016f a jazyk\u016f.<\/p>\n\n\n\n<p>Proces instalace <strong>SDKMAN!<\/strong> Je to docela jednoduch\u00e9. Mus\u00edte spustit:<\/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>a pak<\/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>Nyn\u00ed m\u016f\u017eete spravovat sv\u00e9 <strong>Java<\/strong>, <strong>Scala<\/strong> a <strong>Maven<\/strong> verze.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Spr\u00e1va verz\u00ed - p\u0159\u00edklad<\/h3>\n\n\n\n<p>V tomto p\u0159\u00edkladu nainstalujeme a aktualizujeme verzi n\u011bkolika n\u00e1stroj\u016f. Jedn\u00e1 se pouze o malou podmno\u017einu dostupn\u00fdch n\u00e1stroj\u016f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Instalace<\/h3>\n\n\n\n<p>P\u0159edpokl\u00e1dejme, \u017ee v\u00e1\u0161 nov\u00fd <a href=\"https:\/\/thecodest.co\/cs\/dictionary\/why-do-projects-fail\/\">projekt<\/a> pou\u017e\u00edv\u00e1 <strong>Java 17<\/strong>. Nem\u00e1te \u017e\u00e1dn\u00e9 <strong>Java<\/strong> nainstalovan\u00e1 verze. Chcete ji nainstalovat a nav\u00edc p\u0159idat n\u00e1stroj Maven Daemon, aby se sestavov\u00e1n\u00ed zrychlilo. Mus\u00edte tedy nainstalovat tak\u00e9 n\u00e1stroj Maven. K tomu je t\u0159eba prov\u00e9st t\u0159i jednoduch\u00e9 p\u0159\u00edkazy:<\/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>Na konci instalace ka\u017ed\u00e9ho n\u00e1stroje budete dot\u00e1z\u00e1ni na jeho v\u00fdchoz\u00ed nastaven\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>Chcete, aby byla Java 17-open nastavena jako v\u00fdchoz\u00ed? (Y\/n):<\/code><\/code><\/pre>\n\n\n\n<p>To je d\u016fle\u017eit\u00e9 p\u0159i instalaci nov\u00e9 verze knihovny nebo jazyka, proto\u017ee SDKMAN! nastav\u00ed tuto v\u00fdchoz\u00ed verzi jako glob\u00e1ln\u00ed pro v\u0161echny termin\u00e1ly aktu\u00e1ln\u00edho u\u017eivatele.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kontrola verz\u00ed a aktualizace<\/h3>\n\n\n\n<p>\u010cas od \u010dasu je t\u0159eba aktualizovat indexy SDKMAN! B\u011bhem toho se v\u00e1m m\u016f\u017ee zobrazit zpr\u00e1va, \u017ee existuj\u00ed nov\u00e9 verze n\u00e1stroj\u016f, kter\u00e9 pou\u017e\u00edv\u00e1te. M\u016f\u017eeme zkontrolovat, kter\u00e9 verze jsou k dispozici, zad\u00e1n\u00edm p\u0159\u00edkazu <code>sdk ls<\/code>. Pro <code>sdk ls maven<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Dostupn\u00e9 verze Mavenu\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\nm\u00edstn\u00ed verze\n\naktu\u00e1ln\u011b pou\u017e\u00edvan\u00e1\n\n================================================================================<\/code><\/pre>\n\n\n\n<p>Jak vid\u00edme v\u00fd\u0161e, Maven m\u00e1 nov\u011bj\u0161\u00ed verzi ne\u017e ta, kterou pou\u017e\u00edv\u00e1me. Tot\u00e9\u017e plat\u00ed pro <code>mvnd<\/code> (0.8.2) a Java (19-open). V\u0161e aktualizujme. K tomu sta\u010d\u00ed zavolat p\u0159\u00edkaz install, ale tentokr\u00e1t nepou\u017eijeme specifik\u00e1tor verze:<\/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>Ale stalo se n\u011bco \u0161patn\u00e9ho. <code>Maven<\/code> a <code>mvnd<\/code> maj\u00ed spr\u00e1vn\u00e9 verze, ale <strong>Java<\/strong> m\u00e1 verzi <code>17.0.5-tem<\/code>. To proto, \u017ee \"nejnov\u011bj\u0161\u00ed\" verzi n\u00e1stroje kontroluje jeho dodavatel, nikoli m\u00edstn\u00ed SDKMAN! kdo je tento dodavatel? Prodejce v SDKMAN! je n\u011bkdo, kdo m\u016f\u017ee zve\u0159ejnit verzi. \u0158ekn\u011bme v\u0161ak, \u017ee nakonec nainstalujeme. <code>19-open<\/code>, a my jsme ji nastavili jako v\u00fdchoz\u00ed, ale z n\u011bjak\u00e9ho d\u016fvodu pot\u0159ebujeme pou\u017e\u00edt <code>17-open<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00edstn\u00ed verze a spr\u00e1va verz\u00ed na termin\u00e1lu<\/h3>\n\n\n\n<p>\u200b<br>M\u016f\u017eeme nakonfigurovat <code>v\u00fdchoz\u00ed<\/code> verze n\u00e1stroje, kter\u00e1 je glob\u00e1ln\u00ed pro v\u0161echny projekty a termin\u00e1ly. Kdy\u017e v\u0161ak pot\u0159ebujeme konkr\u00e9tn\u00ed verzi, m\u00e1me dv\u011b mo\u017enosti, jak to ud\u011blat. Prvn\u00edm z nich je pou\u017eit\u00ed <code>sdk use<\/code> p\u0159\u00edkaz poka\u017ed\u00e9, kdy\u017e chceme pou\u017e\u00edt ur\u010ditou verzi n\u00e1stroje v aktu\u00e1ln\u00edm termin\u00e1lu. Druhou mo\u017enost\u00ed je p\u0159ipravit seznam verz\u00ed v <code>.sdkmanrc<\/code> soubor, kter\u00fd je ulo\u017een spolu s projektem.<\/p>\n\n\n\n<p>Zat\u00edmco prvn\u00ed mo\u017enost je ur\u010dena pro jedno pou\u017eit\u00ed, druh\u00e1 je ur\u010dena pro pr\u00e1ci v t\u00fdmech a sd\u00edlen\u00ed konfigurac\u00ed mezi jednotliv\u00fdmi u\u017eivateli. <a href=\"https:\/\/thecodest.co\/cs\/dictionary\/how-to-lead-software-development-team\/\">t\u00fdm<\/a> \u010dlenov\u00e9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00fdhody a nev\u00fdhody SDKMAN!<\/h3>\n\n\n\n<p>SDKMAN! se velmi snadno pou\u017e\u00edv\u00e1 a m\u00e1 bohatou knihovnu podporovan\u00fdch n\u00e1stroj\u016f, framework\u016f a jazyk\u016f. Funguje v syst\u00e9mech Linux, MacOS a Windows. Na druhou stranu je tento n\u00e1stroj zam\u011b\u0159en na JVM a vy\u017eaduje souhlas autora s t\u00edm, aby byl dodavatelem. Krom\u011b toho je mechanikou <code>.sdkmanrc<\/code> je velmi \u0161patn\u00e1 a mohla by v\u00fdrazn\u011b zpomalit proces zm\u011bny adres\u00e1\u0159\u016f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e1d bych pou\u017e\u00edval mnoho dal\u0161\u00edch jazyk\u016f<\/h2>\n\n\n\n<p>Pokud pot\u0159ebujete pou\u017e\u00edvat mnoho jazyk\u016f a n\u00e1stroj\u016f, m\u011bli byste se pod\u00edvat na. <a href=\"https:\/\/asdf-vm.com\/\">asdf<\/a>. Tento n\u00e1stroj je zam\u011b\u0159en na \"vysoko\u00farov\u0148ov\u00e9\" n\u00e1stroje. Zat\u00edmco v SDKMAN! najdete mnoho n\u00e1stroj\u016f specifick\u00fdch pro Javu, jako je Bpipe nebo Znai, asdf nab\u00edz\u00ed mnohem v\u00edce n\u00e1stroj\u016f, ale ne tak specifick\u00fdch. N\u011bkter\u00e9 z t\u011bchto n\u00e1stroj\u016f se samoz\u0159ejm\u011b p\u0159ekr\u00fdvaj\u00ed, nap\u0159. n\u00e1stroje Java, Tomcat nebo mvnd jsou k dispozici v obou.<\/p>\n\n\n\n<p>Kdy\u017e chcete pou\u017e\u00edt <code>asdf<\/code>, mus\u00edte m\u00edt <code>git<\/code> a <code>curl<\/code> instalov\u00e1n. Pot\u00e9 sta\u010d\u00ed:<\/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>a p\u0159idejte tyto \u0159\u00e1dky do <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>Nyn\u00ed m\u016f\u017eete instalovat z\u00e1suvn\u00e9 moduly a n\u00e1stroje ve sv\u00fdch obl\u00edben\u00fdch verz\u00edch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Spr\u00e1va zalo\u017een\u00e1 na z\u00e1suvn\u00fdch modulech<\/h3>\n\n\n\n<p>Na rozd\u00edl od SDKMAN!, <code>asdf<\/code> pou\u017e\u00edv\u00e1 ke spr\u00e1v\u011b n\u00e1stroj\u016f z\u00e1suvn\u00e9 moduly. P\u0159ed instalac\u00ed n\u00e1stroje je tedy nutn\u00e9 nainstalovat z\u00e1suvn\u00fd modul. Vra\u0165me se k na\u0161emu p\u0159\u00edkladov\u00e9mu projektu a zkusme nakonfigurovat prost\u0159ed\u00ed pomoc\u00ed n\u00e1stroje <code>asadfsdf<\/code>.<\/p>\n\n\n\n<p>Nejprve mus\u00edme nainstalovat z\u00e1suvn\u00e9 moduly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">asdf plugin p\u0159idat java\n\nasdf plugin add maven\n\nasdf plugin add mvnd<\/code><\/pre>\n\n\n\n<p>Pak m\u016f\u017eeme nainstalovat na\u0161e n\u00e1stroje:<\/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>A op\u011bt, na rozd\u00edl od SDKMAN!, <code>asdf<\/code> v na\u0161em prost\u0159ed\u00ed nic nem\u011bn\u00ed. Kdy\u017e se pokus\u00edme pou\u017e\u00edt javu, zobraz\u00ed se chybov\u00e1 zpr\u00e1va, jako nap\u0159.:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">Pro p\u0159\u00edkaz Java nen\u00ed nastavena \u017e\u00e1dn\u00e1 verze\n\nZva\u017ete p\u0159id\u00e1n\u00ed jedn\u00e9 z n\u00e1sleduj\u00edc\u00edch verz\u00ed do konfigura\u010dn\u00edho souboru v ~\/.tool-versions\n\njava openjdk-17<\/code><\/pre>\n\n\n\n<p>Pot\u0159ebujeme vytvo\u0159it soubor <code>.tool-versions<\/code> v domovsk\u00e9m adres\u00e1\u0159i pro spr\u00e1vu v\u00fdchoz\u00edch verz\u00ed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00edstn\u00ed a glob\u00e1ln\u00ed verze<\/h3>\n\n\n\n<p>Aktualizace verz\u00ed softwaru pomoc\u00ed <code>asdf<\/code> je velmi jednoduch\u00fd. Sta\u010d\u00ed nainstalovat novou verzi. Proto\u017ee tento proces neovliv\u0148uje prost\u0159ed\u00ed, m\u016f\u017eeme jej prov\u00e9st kdykoli a na jak\u00e9mkoli m\u00edst\u011b souborov\u00e9ho syst\u00e9mu. Kdy\u017e chceme pou\u017e\u00edvat ur\u010ditou verzi n\u011bjak\u00e9ho softwaru, mus\u00edme v adres\u00e1\u0159i projektu vytvo\u0159it soubor <code>.tool-versions<\/code> soubor, kter\u00fd by mohl b\u00fdt sd\u00edlen mezi \u010dleny t\u00fdmu. Nezapome\u0148te, \u017ee mus\u00edte zaru\u010dit, \u017ee v\u0161ichni \u010dlenov\u00e9 t\u00fdmu maj\u00ed <code>asdf<\/code> a nainstalovan\u00e9 z\u00e1suvn\u00e9 moduly. Seznam z\u00e1suvn\u00fdch modul\u016f najdete <a href=\"https:\/\/github.com\/asdf-vm\/asdf-plugins\">zde<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Konflikty verz\u00ed<\/h3>\n\n\n\n<p><code>asdf<\/code> podporuje nejen programovac\u00ed jazyky, frameworky a n\u00e1stroje jako vim nebo kubernetess. Podporuje tak\u00e9 datab\u00e1ze. V takov\u00e9m p\u0159\u00edpad\u011b bychom mohli nainstalovat v\u00edce verz\u00ed nap\u0159\u00edklad Postgresu, ale b\u011b\u017eet by mohla pouze jedna instance. To proto, \u017ee <code>asdf<\/code> prov\u00e1d\u00ed p\u0159\u00edkazy p\u0159\u00edmo v opera\u010dn\u00edm syst\u00e9mu bez jak\u00e9koliv odd\u011blovac\u00ed vrstvy. To vede k probl\u00e9m\u016fm typu \"port je ji\u017e pou\u017e\u00edv\u00e1n\" a konflikt\u016fm o zdroje.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00fdhody a nev\u00fdhody<\/h3>\n\n\n\n<p><code>asdf<\/code> je velmi dobr\u00fd n\u00e1stroj, pokud chcete pracovat v polyglotn\u00edm prost\u0159ed\u00ed. Podporuje mnoho n\u00e1stroj\u016f, jazyk\u016f a framework\u016f. Architektura zalo\u017een\u00e1 na z\u00e1suvn\u00fdch modulech umo\u017e\u0148uje velmi snadn\u00e9 roz\u0161\u00ed\u0159en\u00ed. N\u011bkter\u00e9 n\u00e1stroje, kter\u00e9 m\u00e1 v knihovn\u011b, v\u0161ak vy\u017eaduj\u00ed dodate\u010dnou pr\u00e1ci p\u0159i instalaci, aby byly zaji\u0161t\u011bny v\u0161echny po\u017eadovan\u00e9 z\u00e1vislosti. <code>asdf<\/code> nefunguje v syst\u00e9mu Windows, a to ani v <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_Subsystem_for_Linux\">WSL<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V neposledn\u00ed \u0159ad\u011b - Docker<\/h2>\n\n\n\n<p>Kdy\u017e jsem v\u00fd\u0161e hovo\u0159il o konfliktu v p\u0159\u00edstavu, mnoz\u00ed z v\u00e1s znaj\u00ed \u0159e\u0161en\u00ed.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.docker.com\/\">Docker<\/a> by n\u00e1m v n\u011bkter\u00fdch p\u0159\u00edpadech mohl pomoci. Zmi\u0148uji se o tom z povinnosti, proto\u017ee tento n\u00e1stroj je tak rozs\u00e1hl\u00fd a komplexn\u00ed, \u017ee jej nelze probrat v jednom \u010dl\u00e1nku.<\/p>\n\n\n\n<p>Spole\u010dn\u011b s Dockerem bychom m\u011bli pou\u017e\u00edt <a href=\"https:\/\/docs.docker.com\/compose\/\">docker-compose<\/a> n\u00e1stroj, kter\u00fd n\u00e1m d\u00e1v\u00e1 mo\u017enost koordinovat prost\u0159ed\u00ed s v\u00edce kontejnery.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">V\u00fdhody a nev\u00fdhody n\u00e1stroje Docker<\/h3>\n\n\n\n<p>Docker n\u00e1m pom\u00e1h\u00e1 spravovat n\u00e1stroje, kter\u00e9 pot\u0159ebuj\u00ed ur\u010dit\u00e9 specifick\u00e9 prost\u0159edky, jako jsou porty nebo soubory. Odd\u011bluje instance v kontejnerech a d\u00e1v\u00e1 n\u00e1m nad nimi plnou kontrolu. Nicm\u00e9n\u011b Docker je n\u00e1stroj, kter\u00fd do na\u0161eho pracovn\u00edho prost\u0159ed\u00ed vn\u00e1\u0161\u00ed mnoho slo\u017eitost\u00ed a v n\u011bkter\u00fdch p\u0159\u00edpadech m\u016f\u017ee b\u00fdt problematick\u00fd. Jeden z takov\u00fdch p\u0159\u00edpad\u016f pou\u017eit\u00ed n\u00e1stroje Docker v testu je pops\u00e1n v jednom z na\u0161ich p\u0159edchoz\u00edch \u010dl\u00e1nk\u016f. <a href=\"https:\/\/thecodest.co\/blog\/test-containers-how-to-make-tests-easier\">\u010dl\u00e1nek<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Shrnut\u00ed<\/h2>\n\n\n\n<p>V\u00edm, \u017ee jsem nepopsal v\u0161echny n\u00e1stroje, kter\u00e9 lze pou\u017e\u00edt pro spr\u00e1vu verz\u00ed n\u00e1stroj\u016f. Je jich mnohem v\u00edce, nap\u0159. <a href=\"https:\/\/www.jenv.be\/\">jEnv<\/a> kter\u00fd by mohl nahradit SDKMAN,<\/p>\n\n\n\n<p>nebo <a href=\"https:\/\/github.com\/nvm-sh\/nvm\">NVM<\/a> kter\u00fd m\u016f\u017eeme pou\u017e\u00edt ke spr\u00e1v\u011b npm nebo <a href=\"https:\/\/rvm.io\/\">RVM<\/a> pro <a href=\"https:\/\/thecodest.co\/cs\/case-studies\/providing-a-team-of-ruby-developers-for-a-fintech-company\/\">Ruby<\/a>. Zam\u011b\u0159il jsem se na n\u00e1stroje, kter\u00e9 jsem \"vyzkou\u0161el na boji\u0161ti\" a mohu je doporu\u010dit ka\u017ed\u00e9mu.<\/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>Existuje zlat\u00e1 st\u0159edn\u00ed cesta, jak zvl\u00e1dnout mnoho prost\u0159ed\u00ed pro velk\u00e9 mno\u017estv\u00ed na jednom stroji? N\u00e1\u0161 expert na Javu Bart\u0142omiej zn\u00e1 odpov\u011b\u010f!<\/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\/cs\/blog\/zvladnout-vice-prostredi-pro-vice-projektu-na-jednom-pocitaci\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/blog\/zvladnout-vice-prostredi-pro-vice-projektu-na-jednom-pocitaci\/\" \/>\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\":\"cs-CZ\",\"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\":\"cs-CZ\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/handle-multiple-environments-for-multiple-projects-on-one-machine\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"cs-CZ\",\"@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\":\"cs-CZ\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"cs-CZ\",\"@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\":\"cs-CZ\",\"@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\\\/cs\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zvl\u00e1dnout v\u00edce prost\u0159ed\u00ed pro v\u00edce projekt\u016f na jednom po\u010d\u00edta\u010di? - The Codest","description":"Zjist\u011bte, jak mohou v\u00fdvoj\u00e1\u0159i zvl\u00e1dnout v\u00edce prost\u0159ed\u00ed pro r\u016fzn\u00e9 projekty na jednom po\u010d\u00edta\u010di pomoc\u00ed spr\u00e1vc\u016f verz\u00ed a kontejnerizace.","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\/cs\/blog\/zvladnout-vice-prostredi-pro-vice-projektu-na-jednom-pocitaci\/","og_locale":"cs_CZ","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\/cs\/blog\/zvladnout-vice-prostredi-pro-vice-projektu-na-jednom-pocitaci\/","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":"cs-CZ","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":"Zvl\u00e1dnout v\u00edce prost\u0159ed\u00ed pro v\u00edce projekt\u016f na jednom po\u010d\u00edta\u010di? - 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":"Zjist\u011bte, jak mohou v\u00fdvoj\u00e1\u0159i zvl\u00e1dnout v\u00edce prost\u0159ed\u00ed pro r\u016fzn\u00e9 projekty na jednom po\u010d\u00edta\u010di pomoc\u00ed spr\u00e1vc\u016f verz\u00ed a kontejnerizace.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/#breadcrumb"},"inLanguage":"cs-CZ","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/handle-multiple-environments-for-multiple-projects-on-one-machine\/"]}]},{"@type":"ImageObject","inLanguage":"cs-CZ","@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":"cs-CZ"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"cs-CZ","@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":"cs-CZ","@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\/cs\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/posts\/3348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/comments?post=3348"}],"version-history":[{"count":9,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/posts\/3348\/revisions"}],"predecessor-version":[{"id":8550,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/posts\/3348\/revisions\/8550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/media\/3349"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/media?parent=3348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/categories?post=3348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/cs\/wp-json\/wp\/v2\/tags?post=3348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}