Eleged van már a Dockerfile-al való babrálásból? A Dockerfiles és a Docker lemezképek nagyszerű módja annak, hogy az alkalmazást újrafelhasználható, konténeres telepítésekhez csomagolja. A Dockerfile írása és karbantartása azonban nem mindig intuitív, és időt vesz igénybe, amelyet egyébként felhasználhatna az alkalmazáshoz funkciók hozzáadásához. Lépjen be a Cloud Native Buildpacksba. Buildpackok léteznek, hogy összegyűjtsék mindazt, amire az alkalmazásnak szüksége van a futáshoz, és egy Open Container Initiative (OCI) képbe helyezi – nincs szükség Dockerfile-re.
A Cloud Native Buildpacks lehet a keresett megoldás minden olyan fejlesztő számára, akinek olyan konténerépítési folyamatra van szüksége, amely könnyen használható, és időt és fejfájást takarít meg. Érdekelt? mesélek még.
Mik azok a Cloud Native Buildpackok?
Általánosságban elmondható, hogy egy buildpack alkalmazáskódot vesz fel, és futtathatóvá teszi azt egy összeállítási folyamaton keresztül. Így aztán a Cloud Native Buildpacks elfoglalja az alkalmazás forráskódját, és futtatható, reprodukálható OCI-képekké alakítja, és megvalósítja a képbiztonsággal, a teljesítményoptimalizálással és a konténerépítési sorrenddel kapcsolatos követelményeket. Ez olyan, mintha pontosan a szükséges Dockerfile rendelkezne – csak nem kell egyet írnia.
Míg a legtöbb fejlesztő tud Docker-fájlt írni, kevesen ismerik a Dockert vagy az infrastruktúrát. Túl sok alkalmazás rendelkezik Docker-fájlokkal, amelyek az interneten található kódrészletekből állnak össze – gyakran a Copilot, a Stack Overflow és a ChatGPT keveréke. A Dockerfile hibák bizonytalan és rosszul teljesítő alkalmazásokhoz vezethetnek.
A Cloud Native Buildpacks átveszi ezt a terhet, és automatikusan alkalmazza a bevált módszereket minden egyes nyelvhez vagy keretrendszerhez. A készítő ezután tetszőleges számú buildcsomagot használhat, automatikusan észlelve, hogy mely buildcsomagokra van szükség, és alkalmazni tudja őket egy alkalmazás létrehozásához. Itt vannak a Heroku építője által jelenleg támogatott buildcsomagok:
$ pack builder inspect heroku/builder:24 Inspecting builder: heroku/builder:24 REMOTE: Description: Ubuntu 24.04 AMD64+ARM64 base image with buildpacks for .NET, Go, Java, Node.js, PHP, Python, Ruby & Scala. ... Buildpacks: ID NAME VERSION heroku/deb-packages Heroku .deb Packages 0.0.3 heroku/dotnet Heroku .NET 0.1.10 heroku/go Heroku Go 0.5.2 heroku/gradle Heroku Gradle 6.0.4 heroku/java Heroku Java 6.0.4 heroku/jvm Heroku OpenJDK 6.0.4 heroku/maven Heroku Maven 6.0.4 heroku/nodejs Heroku Node.js 3.4.5 heroku/nodejs-corepack Heroku Node.js Corepack 3.4.5 heroku/nodejs-engine Heroku Node.js Engine 3.4.5 heroku/nodejs-npm-engine Heroku Node.js npm Engine 3.4.5 heroku/nodejs-npm-install Heroku Node.js npm Install 3.4.5 heroku/nodejs-pnpm-engine Heroku Node.js pnpm Engine 3.4.5 heroku/nodejs-pnpm-install Heroku Node.js pnpm install 3.4.5 heroku/nodejs-yarn Heroku Node.js Yarn 3.4.5 heroku/php Heroku PHP 0.2.0 heroku/procfile Heroku Procfile 4.0.0 heroku/python Heroku Python 0.23.0 heroku/ruby Heroku Ruby 5.0.1 heroku/sbt Heroku sbt 6.0.4 heroku/scala Heroku Scala 6.0.4
Más építők, mint például a Paketo vagy a Google Cloud , szintén számos buildcsomagot hoznak. Összességében a Cloud Native Buildpacks ökoszisztéma növekszik és érlelődik, ami izgalmas a fejlesztők számára!
Azok, akik ismerik a Herokut, már élvezték a buildpack élményt. git push heroku main
segítségével közvetlenül telepíthető a Herokuba, Dockerfile nélkül. A Cloud Native Buildpacks a Heroku buildpack-élményére épít, átveszi az egykor szállítóspecifikus implementációt, és CNCF-szabványsá alakítja, amely bármely felhőplatformon használható.
Röviden, a Cloud Native Buildpacks lehetővé teszi a fejlesztők számára, hogy:
- Könnyebben telepíthet alkalmazásokat, mint valaha
- … szabványos módon, bezárás nélkül
- … mindezt a konténer legjobb gyakorlatainak alkalmazása mellett
- …és anélkül, hogy a fejlesztőket rávenné a Dockerfiles-el való trükközésre.
Használati esetek
Jól hangzik, igaz? Mindezen előnyök mellett nézzünk meg néhány konkrét esetet, amikor a Cloud Native Buildpacks használata előnyös lehet.
Bármilyen helyen, ahol általában szüksége van egy Dockerfile-ra, lehetőség nyílik buildpack használatára. Példák:
- Egy Node.js webalkalmazás
- Python mikroszolgáltatás
- Heterogén alkalmazás, amely több nyelvet vagy keretrendszert használ
- Alkalmazások készítése felhőplatformokon, például AWS-en, Azure-on és Heroku-n történő telepítéshez
Egy dolog, amit érdemes megjegyezni: Míg a buildcsomagok deklaratívak , a Docker-fájlok procedurálisak . Egy buildpack esetén egyszerűen kijelenti, hogy egy adott alkalmazást egy adott builderrel vagy buildpack-kel szeretne elkészíteni. Ezzel szemben a Dockerfile megköveteli a parancsok meghatározását és a parancsok futtatásának sorrendjét az alkalmazás felépítéséhez. Mint ilyenek, a buildpack-ek jelenleg nem kínálják a Dockerfile-on belül elérhető konfigurálhatósági szintet, így előfordulhat, hogy nem felel meg bizonyos fejlettebb használati esetek igényeinek.
Ennek ellenére a Cloud Native Buildpacks nem kötődik a gyártóhoz. Egyszerűen egy OCI-képet építenek. Több testreszabásra és lehetőségre van szüksége, mint amennyi az összeállítási csomagban elérhető? Egyszerűen cserélje ki az összeállítási folyamatban lévő buildert a Dockerfile-ra és egy szabványos OCI image buildre, és már mehet is.
Egy egyszerű végigjátszás
Végezzünk egy gyors áttekintést a Cloud Native Buildpacks használatáról.
Ahhoz, hogy alkalmazásfejlesztőként elkezdhesse a buildpacks használatát, az első lépés a Pack CLI eszköz telepítése. Ez az eszköz lehetővé teszi, hogy alkalmazásokat építs csomagokkal. Kövesse az operációs rendszerének megfelelő telepítési utasításokat.
Ezenkívül, ha még nem rendelkezik vele, szüksége lesz egy Docker-démonra , hogy az építő elkészíthesse az alkalmazást, és Ön is futtathassa a képfájlt. A két eszköz telepítésével készen áll a kezdésre.
Mintaalkalmazás készítése
Ha hozzáfér a pack
, készen áll arra, hogy kipróbálja egy példaalkalmazás elkészítésével. Ezt egy Next.js alkalmazáson belül fogom futtatni. Mintaalkalmazásra van szüksége a buildpack teszteléséhez? Itt található a Next.js példaalkalmazások teljes könyvtára . Kipróbálhatja a kéznél lévő alkalmazásokat is.
Ha elkészült az alkalmazással, kezdje azzal, hogy nézze meg, milyen építőt javasol a csomagolóeszköz. A shellben keresse meg az alkalmazáskönyvtárat, és futtassa ezt a parancsot:
$ pack builder suggest
Az Ubuntu telepítésem során a Next.js alkalmazásomhoz a pack
a következő építőket javasolja:
Próbáljuk ki a javasolt Heroku buildpack-et ( heroku/builder:24
). Ennek használatához futtassa a következő parancsot:
$ pack build my-app --builder heroku/builder:24
Az építési idő az alkalmazás méretétől függően változik; nekem az alkalmazás elkészítése 30 másodpercig tartott. Ezzel készen állt a képem. A képet a következőkkel futtathatjuk:
$ docker run -p 3000:3000 my-app
Az eredmény így néz ki:
És ennyi! Sikeresen elkészítettük Next.js alkalmazásunk OCI-képet – Dockerfile használata nélkül .
További konfigurációk
Mi van, ha valamit be kell állítani a buildpack-en belül? Ehhez hivatkoznia kell a buildpack(ek)re, amelyeket az építője választott ki. Például a Next.js alkalmazásomhoz azt látom a naplókban, hogy az építő két buildcsomagot választott ki: nodejs-engine és nodejs-yarn .
Tegyük fel, hogy szeretném megadni a buildpack által használt fonalverziót. Először a nodejs-yarn buildpack Readme- hoz mennék, ahol azt látom, hogy a package.json
fájlomban egy packageManager
kulccsal megadhatom a fonal verzióját. Módosítanám a fájlomat a következőre:
{ "packageManager": "yarn@1.22.22" }
Innen már csak annyit kell tennem, hogy újra lefuttassam pack build my-app --builder heroku/builder:24
.
Következtetés
A Cloud Native Buildpacks izgalmas új módja annak, hogy tárolóképeket készítsünk alkalmazásaink számára. Azáltal, hogy nincs szükség Dockerfile-ra, minden eddiginél gyorsabbá teszik az alkalmazásunk becsomagolását és telepítését. Ráadásul, mivel szabványos konténerképeket készítenek, nincs szállítói bezárás.
A Cloud Native Buildpacks számos platformon megtekinthető, ami azt jelenti, hogy a funkciókészlet könnyű, de gyorsan bővül. A Heroku, amely nyílt forráskódú Cloud Native Buildpacks csomagjait , azokat a következő generációs platformjára is elhozza. Kíváncsian várom, hogy a Cloud Native Buildpacks hogyan teszi lehetővé az alkalmazások biztonságos, gyors telepítését a felhőplatform-közösségben.