{"id":37667,"date":"2019-10-31T22:18:58","date_gmt":"2019-10-31T19:18:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry\/"},"modified":"2019-10-31T22:18:58","modified_gmt":"2019-10-31T19:18:58","slug":"podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","title":{"rendered":"Monorepo \u00e9s multirepo t\u00e1mogat\u00e1s a werf-ben, \u00e9s mi k\u00f6ze a Docker Registryhez","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Monorepo \u00e9s multirepo t\u00e1mogat\u00e1s a werf-ben, \u00e9s mi k\u00f6ze a Docker Registryhez\" src=\"\/wp-content\/uploads\/2019\/09\/7bd2036d8e53b04965212698a209d4c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA monorepo t\u00e9ma m\u00e1r t\u00f6bb alkalommal is napirendre ker\u00fclt, \u00e9s \u00e1ltal\u00e1ban rendk\u00edv\u00fcl \u00e9l\u00e9nk vit\u00e1kat v\u00e1lt ki. Amikor l\u00e9trehozzuk <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex> mint egy ny\u00edlt forr\u00e1sk\u00f3d\u00fa eszk\u00f6z, amely a Gitb\u0151l Docker k\u00e9pekbe t\u00f6rt\u00e9n\u0151 alkalmaz\u00e1sforr\u00e1s-k\u00f3d buildel\u00e9si folyamatainak jav\u00edt\u00e1s\u00e1ra van hivatva (\u00e9s azok k\u00e9s\u0151bbi tov\u00e1bb\u00edt\u00e1s\u00e1ra Kubernetesbe), ritk\u00e1n gondolkodunk azon, hogy melyik opci\u00f3 a legjobb. Sz\u00e1munkra az els\u0151dleges c\u00e9l, hogy minden sz\u00fcks\u00e9ges er\u0151forr\u00e1st biztos\u00edtsunk a k\u00fcl\u00f6nb\u00f6z\u0151 v\u00e9lem\u00e9nyek t\u00e1mogat\u00f3i sz\u00e1m\u00e1ra (ha ez nem \u00fctk\u00f6zik az eg\u00e9szs\u00e9ges \u00e9sz \u00e9rv\u00e9vel, term\u00e9szetesen).<\/p>\n<p>A werf mono-repo t\u00e1mogat\u00e1s\u00e1nak nemr\u00e9giben bevezetett p\u00e9ld\u00e1ja j\u00f3l mutatja ezt. De el\u0151sz\u00f6r is, n\u00e9zz\u00fck meg, hogyan kapcsol\u00f3dik ez a t\u00e1mogat\u00e1s a werf haszn\u00e1lat\u00e1hoz \u00e9s mi k\u00f6ze van a Docker Registryhez\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Probl\u00e9matika<\/h2>\n<p>\nK\u00e9pzelj\u00fcnk el egy ilyen helyzetet. Egy v\u00e1llalatn\u00e1l sz\u00e1mos fejleszt\u0151csapat dolgozik f\u00fcggetlen projekteken. T\u00f6bbnyire az alkalmaz\u00e1sok Kubernetesben m\u0171k\u00f6dnek, \u00edgy kont\u00e9neriz\u00e1lva vannak. A kont\u00e9nerek, k\u00e9pek t\u00e1rol\u00e1s\u00e1hoz sz\u00fcks\u00e9ges egy registry. A v\u00e1llalat Docker Hubot haszn\u00e1l egyetlen fi\u00f3kkal <code>C\u00c9G<\/code>. A legt\u00f6bb forr\u00e1sk\u00f3d-t\u00e1rol\u00f3 rendszerhez hasonl\u00f3an <b>a Docker Hub nem engedi meg a be\u00e1gyazott t\u00e1rol\u00f3i hierarchia l\u00e9trehoz\u00e1s\u00e1t<\/b>, mint p\u00e9ld\u00e1ul <code>C\u00c9G\/PROJEKT\/K\u00c9P<\/code>. Ilyen esetben\u2026 hogyan t\u00e1rolhatjuk a registryben a nem monolitikus alkalmaz\u00e1sokat an\u00e9lk\u00fcl, hogy minden projekthez k\u00fcl\u00f6n fi\u00f3kot kellene l\u00e9trehoznunk? <\/p>\n<p><img decoding=\"async\" alt=\"Monorepo \u00e9s multirepo t\u00e1mogat\u00e1s a werf-ben, \u00e9s mi k\u00f6ze a Docker Registryhez\" src=\"\/wp-content\/uploads\/2019\/09\/b7905fab48723a123bee536e1fe56c5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLehets\u00e9ges, hogy az itt le\u00edrt helyzet valakinek ismer\u0151s, de n\u00e9zz\u00fck meg a k\u00e9rd\u00e9st az alkalmaz\u00e1sok t\u00e1rol\u00e1s\u00e1nak megszervez\u00e9s\u00e9r\u0151l \u00e1ltal\u00e1noss\u00e1gban, azaz an\u00e9lk\u00fcl, hogy k\u00f6t\u0151dn\u00e9nk a fent le\u00edrt p\u00e9ld\u00e1hoz \u00e9s a Docker Hubhoz.<\/p>\n<h3>Megold\u00e1si javaslatok<\/h3>\n<p>\nHa az alkalmaz\u00e1s <b>monolitikus<\/b>, egy k\u00e9pk\u00e9nt ker\u00fcl kiad\u00e1sra, akkor nincsenek k\u00e9rd\u00e9sek, \u00e9s egyszer\u0171en a projekt kont\u00e9ner registryj\u00e9ben t\u00e1roljuk a k\u00e9peket.<\/p>\n<p>Amikor az alkalmaz\u00e1s t\u00f6bb komponensb\u0151l \u00e1ll, <b>mikroszolg\u00e1ltat\u00e1sokhoz<\/b>, akkor bizonyos megk\u00f6zel\u00edt\u00e9st kell v\u00e1lasztani. P\u00e9ld\u00e1ul egy tipikus webalkalmaz\u00e1s eset\u00e9n, amely k\u00e9t k\u00e9pb\u0151l \u00e1ll: <code>frontend<\/code> \u00e9s <code>backend<\/code> \u2014 lehets\u00e9ges lehet\u0151s\u00e9gek a k\u00f6vetkez\u0151k:<\/p>\n<ol>\n<li> K\u00e9pek t\u00e1rol\u00e1sa k\u00fcl\u00f6n be\u00e1gyazott t\u00e1rol\u00f3kban:\n<p><img decoding=\"async\" alt=\"Monorepo \u00e9s multirepo t\u00e1mogat\u00e1s a werf-ben, \u00e9s mi k\u00f6ze a Docker Registryhez\" src=\"\/wp-content\/uploads\/2019\/09\/a05bfdaec10ea7b4542200c6a2bb4939.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li> Mindent egyetlen t\u00e1rol\u00f3ban t\u00e1rolni, a k\u00e9pn\u00e9v figyelembev\u00e9tel\u00e9vel a c\u00edmk\u00e9n, p\u00e9ld\u00e1ul \u00edgy:\n<p><img decoding=\"async\" alt=\"Monorepo \u00e9s multirepo t\u00e1mogat\u00e1s a werf-ben, \u00e9s mi k\u00f6ze a Docker Registryhez\" src=\"\/wp-content\/uploads\/2019\/09\/83498b5bcdf7a57dfe933295e78fc785.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ol>\n<p>\n<i><b>NB<\/b>: Egy\u00e9bk\u00e9nt, van m\u00e9g egy lehet\u0151s\u00e9g k\u00fcl\u00f6nb\u00f6z\u0151 t\u00e1rol\u00f3kb\u00f3l t\u00f6rt\u00e9n\u0151 t\u00e1rol\u00e1sra, <code>PROJEKT-frontend<\/code> \u00e9s <code>PROJEKT-backend<\/code>, de ezt nem fogjuk figyelembe venni a t\u00e1mogat\u00e1s bonyolults\u00e1ga, a szervezet\u00e9 \u00e9s a felhaszn\u00e1l\u00f3k k\u00f6z\u00f6tti jogok eloszt\u00e1sa miatt.<\/i><\/p>\n<h2>T\u00e1mogat\u00e1s a werf-ben<\/h2>\n<p>\nEredetileg a werf a be\u00e1gyazott t\u00e1rol\u00f3kra korl\u00e1toz\u00f3dott \u2013 szerencs\u00e9re a legt\u00f6bb t\u00e1rol\u00f3 ezt a lehet\u0151s\u00e9get t\u00e1mogatja. Az <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/releases\/tag\/v1.0.4-alpha.3\">v1.0.4-alpha.3<\/a><\/noindex>-t\u00f3l kezd\u0151d\u0151en lehet\u0151s\u00e9g ny\u00edlt olyan t\u00e1rol\u00f3kkal val\u00f3 munk\u00e1ra is, amelyek <b>nem t\u00e1mogatj\u00e1k a be\u00e1gyaz\u00e1st<\/b>, k\u00f6zt\u00fck a Docker Hub is. Ezt k\u00f6vet\u0151en a felhaszn\u00e1l\u00f3knak lehet\u0151s\u00e9g\u00fck ny\u00edlt v\u00e1lasztani, hogy hogyan t\u00e1rolj\u00e1k az alkalmaz\u00e1s k\u00e9peit.<\/p>\n<p>A megval\u00f3s\u00edt\u00e1s a k\u00f6vetkez\u0151 opci\u00f3 keretein bel\u00fcl \u00e9rhet\u0151 el: <code>--images-repo-mode=multirepo|monorepo<\/code> (alap\u00e9rtelmezett <code>multirepo<\/code>, azaz k\u00e9pek t\u00e1rol\u00e1sa be\u00e1gyazott t\u00e1rol\u00f3kban). Ez hat\u00e1rozza meg a mint\u00e1kat, amelyek szerint a k\u00e9pek a t\u00e1rol\u00f3ban t\u00e1rol\u00f3dnak. Csak a sz\u00fcks\u00e9ges m\u00f3dot kell kiv\u00e1lasztani a f\u0151 parancsok haszn\u00e1latakor, \u00e9s minden m\u00e1s v\u00e1ltozatlan marad.<\/p>\n<p>Mivel a werf legt\u00f6bb opci\u00f3j\u00e1t lehet k\u00f6rnyezeti v\u00e1ltoz\u00f3kk\u00e9nt be\u00e1ll\u00edtani, <b>CI\/CD rendszerekben a t\u00e1rol\u00e1si m\u00f3dot \u00e1ltal\u00e1ban k\u00f6nny\u0171 glob\u00e1lisan be\u00e1ll\u00edtani az eg\u00e9sz projektre. P\u00e9ld\u00e1ul<\/b>GitLab eset\u00e9ben <b>el\u00e9g egy k\u00f6rnyezeti v\u00e1ltoz\u00f3t hozz\u00e1adni a projekt be\u00e1ll\u00edt\u00e1saiban:<\/b> Be\u00e1ll\u00edt\u00e1sok -&gt; CI \/ CD -&gt; V\u00e1ltoz\u00f3k: <i>WERF_IMAGES_REPO_MODE: multirepo|monorepo <code>Ha a k\u00e9pek kiad\u00e1s\u00e1r\u00f3l \u00e9s az alkalmaz\u00e1sok telep\u00edt\u00e9s\u00e9r\u0151l besz\u00e9l\u00fcnk (err\u0151l a folyamatokr\u00f3l r\u00e9szletesen olvashatsz a megfelel\u0151 dokument\u00e1ci\u00f3s cikkekben:<\/code><\/i>.<\/p>\n<p>Kiad\u00e1si folyamat <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/publish_process.html\">Telep\u00edt\u00e9si folyamat<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/deploy_process\/deploy_into_kubernetes.html\">), akkor a m\u00f3d kiz\u00e1r\u00f3lag a minta meghat\u00e1roz\u00e1s\u00e1t befoly\u00e1solja, amellyel a k\u00e9ppel lehet dolgozni.<\/a><\/noindex>A r\u00e9szletek rejlenek a dologban<\/p>\n<h3>A legf\u0151bb k\u00fcl\u00f6nbs\u00e9g \u00e9s probl\u00e9ma egy \u00faj t\u00e1rol\u00e1si m\u00f3d hozz\u00e1ad\u00e1sakor a registry tiszt\u00edt\u00e1si folyamata<\/h3>\n<p>\n(a werf \u00e1ltal t\u00e1mogatott tiszt\u00edt\u00e1si lehet\u0151s\u00e9gekr\u0151l l\u00e1sd a <i>Tiszt\u00edt\u00e1si folyamat <noindex><a rel=\"nofollow\" href=\"https:\/\/werf.io\/documentation\/reference\/cleaning_process.html\">c\u00edm\u0171 r\u00e9szt). A werf figyelembe veszi a Kubernetes klaszterekben haszn\u00e1lt k\u00e9peket, valamint a felhaszn\u00e1l\u00f3 \u00e1ltal be\u00e1ll\u00edtott politik\u00e1kat. A politik\u00e1k alapja a tagek strat\u00e9gi\u00e1kra val\u00f3 feloszt\u00e1sa. Jelenleg t\u00e1mogatott strat\u00e9gi\u00e1k:<\/a><\/noindex>)<\/i>.<\/p>\n<p>3 strat\u00e9gia, amelyek Git primit\u00edvjeivel, p\u00e9ld\u00e1ul taggel, branchnel \u00e9s commit-tal kapcsolatosak;<\/p>\n<ol>\n<li> 1 strat\u00e9gia tetsz\u0151leges felhaszn\u00e1l\u00f3i tagek sz\u00e1m\u00e1ra.<\/li>\n<li> A tag strat\u00e9gia inform\u00e1ci\u00f3it a k\u00e9p kiad\u00e1sa sor\u00e1n mentj\u00fck el a v\u00e9gs\u0151 k\u00e9p c\u00edmk\u00e9in\u00e9l. Maga az \u00e9rt\u00e9k \u2013 \u00fagynevezett<\/li>\n<\/ol>\n<p>\nmetatag <b>\u2013 sz\u00fcks\u00e9ges egyes politik\u00e1k alkalmaz\u00e1s\u00e1hoz. P\u00e9ld\u00e1ul, amikor egy branch vagy tag t\u00f6r\u00f6lve van a Git t\u00e1rol\u00f3b\u00f3l, logikus, hogy a kapcsol\u00f3d\u00f3<\/b> nem haszn\u00e1lt <i>k\u00e9pek is t\u00f6rl\u00e9sre ker\u00fcljenek a t\u00e1rol\u00f3b\u00f3l, ami egy r\u00e9sz\u00e9t k\u00e9pezi politik\u00e1inknak.<\/i> Amikor egy t\u00e1rol\u00f3ban ment\u00fcnk el (<\/p>\n<p>monorepo<code>), a k\u00e9p c\u00edmk\u00e9j\u00e9n a metatag mellett a k\u00e9p neve is t\u00e1rolhat\u00f3:<\/code>), a k\u00e9ptagban a metac\u00edmk\u00e9n k\u00edv\u00fcl a k\u00e9p nev\u00e9t is t\u00e1rolhatja: <code>PROJEKT:<b>frontend<\/b>-META-JEGY<\/code>. Nem vezett\u00fcnk be speci\u00e1lis elv\u00e1laszt\u00f3t a r\u00e9szek elv\u00e1laszt\u00e1s\u00e1ra, hanem egyszer\u0171en hozz\u00e1adtuk a sz\u00fcks\u00e9ges \u00e9rt\u00e9ket a v\u00e9gs\u0151 k\u00e9p c\u00edmk\u00e9j\u00e9hez a k\u00f6zz\u00e9t\u00e9tel sor\u00e1n.<\/p>\n<p><i><b>NB<\/b>: Ha \u00e9rdekesnek tal\u00e1lja a werf forr\u00e1sk\u00f3dj\u00e1ban le\u00edrtakat, akkor kiindul\u00f3pontk\u00e9nt szolg\u00e1lhat <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\/pull\/1684\/files\">PR 1684<\/a><\/noindex>.<\/i><\/p>\n<p>Ebben a cikkben nem fogunk tov\u00e1bbi figyelmet szentelni a probl\u00e9m\u00e1nak \u00e9s a megk\u00f6zel\u00edt\u00e9s\u00fcnk indokl\u00e1s\u00e1nak: a c\u00edmk\u00e9z\u00e9si strat\u00e9gi\u00e1kr\u00f3l, az adatok t\u00e1rol\u00e1s\u00e1r\u00f3l a c\u00edmk\u00e9kben \u00e9s a k\u00f6zz\u00e9t\u00e9teli folyamatr\u00f3l \u00e1ltal\u00e1ban - mindezekr\u0151l r\u00e9szletesen sz\u00e1mot adott Dmitrij Sztojlarov legut\u00f3bbi el\u0151ad\u00e1s\u00e1ban: \u201e<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 a Kubernetes CI\/CD eszk\u00f6z\u00fcnk<\/a><\/noindex>\u00bb.<\/p>\n<h2>\u00d6sszefoglalva<\/h2>\n<p>\nA t\u00f6bbszint\u0171 t\u00e1rol\u00f3k t\u00e1mogat\u00e1s\u00e1nak hi\u00e1nya nem jelentett blokkol\u00f3 t\u00e9nyez\u0151t sz\u00e1munkra vagy a sz\u00e1munkra ismert werf felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra - hiszen mindig fel lehet \u00e1ll\u00edtani egy k\u00fcl\u00f6n t\u00e1rol\u00f3t (vagy \u00e1tt\u00e9rni egy felt\u00e9teles Container Registry-re a Google Cloud-ban)... Azonban ennek a korl\u00e1toz\u00e1snak a megsz\u00fcntet\u00e9se logikusnak t\u0171nt, hogy az eszk\u00f6z k\u00e9nyelmesebb legyen a sz\u00e9lesebb DevOps k\u00f6z\u00f6ss\u00e9g sz\u00e1m\u00e1ra. A megval\u00f3s\u00edt\u00e1s sor\u00e1n a legf\u0151bb neh\u00e9zs\u00e9get a kont\u00e9ner t\u00e1rol\u00f3 tiszt\u00edt\u00e1si mechanizmus\u00e1nak \u00e1tdolgoz\u00e1sa jelentette. Most, hogy minden k\u00e9sz, \u00f6r\u00f6m tudni, hogy valakinek k\u00f6nnyebb lett, \u00e9s nek\u00fcnk (mint a projekt f\u0151 fejleszt\u0151inek) a j\u00f6v\u0151beli t\u00e1mogat\u00e1s\u00e1ra ezen funkci\u00f3 tekintet\u00e9ben nem val\u00f3sz\u00edn\u0171s\u00edthet\u0151k komoly neh\u00e9zs\u00e9gek.<\/p>\n<p>Maradjanak vel\u00fcnk, \u00e9s hamarosan mes\u00e9l\u00fcnk m\u00e1s \u00faj\u00edt\u00e1sokr\u00f3l a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex>!<\/p>\n<h2>P.S.<\/h2>\n<p>\nOlvasson tov\u00e1bbi inform\u00e1ci\u00f3kat a blogunkban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/463613\/\">Most Docker images in werf can now be built using a regular Dockerfile<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 az eszk\u00f6z\u00fcnk CI\/CD-hez Kubernetes-ben (\u00e1ttekint\u00e9s \u00e9s a besz\u00e1mol\u00f3 vide\u00f3ja)<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465131\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0430\u0441\u044c \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 \u0438, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0440\u044b. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u044f werf \u043a\u0430\u043a Open Source-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u0437 Git \u0432 Docker-\u043e\u0431\u0440\u0430\u0437\u044b (\u0438 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 Kubernetes), \u043c\u044b \u043c\u0430\u043b\u043e \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u0435\u043c \u043d\u0430 \u0442\u0435\u043c\u0443 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u043b\u0443\u0447\u0448\u0435. \u0414\u043b\u044f \u043d\u0430\u0441 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043a\u043e\u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u043d\u0435\u043d\u0438\u0439 (\u0435\u0441\u043b\u0438 \u044d\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28270,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37667","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 monorepo \u0438 multirepo \u0432 werf \u0438 \u043f\u0440\u0438 \u0447\u0451\u043c \u0437\u0434\u0435\u0441\u044c Docker Registry | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:58+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47A monorepo \u00e9s multirepo t\u00e1mogat\u00e1sa a werf-ben \u00e9s mi\u00e9rt van itt a Docker Registry | ProHoster","description":"A monorepo t\u00e9m\u00e1ja.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 monorepo \u0438 multirepo \u0432 werf \u0438 \u043f\u0440\u0438 \u0447\u0451\u043c \u0437\u0434\u0435\u0441\u044c Docker Registry | ProHoster","og:description":"\u0422\u0435\u043c\u0430 \u043c\u043e\u043d\u043e\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/podderzhka-monorepo-i-multirepo-v-werf-i-pri-chyom-zdes-docker-registry","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:58+00:00","article:modified_time":"2019-10-31T19:18:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37667","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:22:29","updated":"2026-01-23 18:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=37667"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/37667\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/28270"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=37667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=37667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=37667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}