Сіз Dockerfile файлымен айналысудан шаршадыңыз ба? Dockerfiles және Docker кескіндері қолданбаңызды қайта пайдалануға болатын, контейнерлік орналастырулар үшін буып-түйудің тамаша тәсілі болып табылады. Дегенмен, Dockerfile жазу және оған қызмет көрсету әрқашан интуитивті бола бермейді және ол қолданбаға мүмкіндіктерді қосу үшін пайдаланылуы мүмкін уақытты алады. Cloud Native Buildpacks енгізіңіз. Қолданбаны іске қосу үшін қажет нәрсенің барлығын біріктіріп, оны Open Container Initiative (OCI) кескініне қою үшін Buildpacks бар — Dockerfile қажет емес.
Пайдалануға оңай және уақыт пен бас ауруын үнемдейтін контейнер құру процесін қажет ететін барлық әзірлеушілер үшін Cloud Native Buildpacks олар іздеген шешім болуы мүмкін. Қызықты ма? Мен сізге толығырақ айтып беремін.
Cloud Native Buildpacks дегеніміз не?
Жалпы айтқанда, құрастыру пакеті қолданба кодын алады және оны құрастыру процесі арқылы іске қосуға мүмкіндік береді. Сонымен, Cloud Native Buildpacks қолданбаңыздың бастапқы кодын алып, оны іске қосылатын, қайталанатын OCI кескіндеріне айналдырып, кескін қауіпсіздігіне, өнімділікті оңтайландыруға және контейнер құру тәртібіне қойылатын талаптарды жүзеге асырады. Бұл сізге қажет нақты Docker файлына ие болу сияқты - тек біреуін жазудың қажеті жоқ.
Көптеген әзірлеушілер Dockerfile жаза алатынымен, Docker немесе инфрақұрылымның сарапшылары аз. Тым көп қолданбаларда Интернетте табылған код үзінділерінен біріктірілген Docker файлдары бар — көбінесе Copilot, Stack Overflow және ChatGPT біріктірілген. Dockerfile қателері қауіпті және нашар жұмыс істейтін қолданбаларға әкелуі мүмкін.
Cloud Native Buildpacks бұл ауыртпалықты өз мойнына алып, әрбір тіл немесе жүйе үшін ең жақсы тәжірибелерді автоматты түрде қолданады. Содан кейін құрастырушы құрастыру бумаларының кез келген санын пайдалана алады, қандай құрастыру бумалары қажет екенін автоматты түрде анықтайды және оларды қолданбаны құру үшін қолдана алады. Міне, Heroku құрастырушысы қазіргі уақытта қолдайтын құрастыру пакеттері:
$ 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
Басқа құрылысшылар, мысалы, Paketo немесе Google Cloud сияқты, құрастыру пакеттерінің жиынын әкеледі. Тұтастай алғанда, Cloud Native Buildpacks экожүйесі өсіп, жетіліп келеді, бұл әзірлеушілерді қызықтырады!
Heroku-мен таныстарыңыз үшін сіз құрастыру пакеті тәжірибесінен ләззат алғансыз. git push heroku main
көмегімен сіз Dockerfile қажет етпей, тікелей Heroku жүйесіне орналастыра алдыңыз. Cloud Native Buildpacks Heroku buildpack тәжірибесіне негізделіп, бір кездері сатушыға арналған іске асыруды алып, оны кез келген бұлттық платформада қолдануға болатын CNCF стандартына айналдырады.
Қысқасы, Cloud Native Buildpacks әзірлеушілерге:
- Қолданбаларды бұрынғыдан да оңай орналастырыңыз
- … құлыптаусыз стандартты түрде
- … барлығы контейнердегі ең жақсы тәжірибелерді қолдану кезінде
- ... және әзірлеушілерді Dockerfiles-пен айналыспай-ақ.
Пайдалану жағдайлары
Керемет естіледі, солай ма? Барлық осы артықшылықтарды ескере отырып, Cloud Native Buildpacks пайдалану пайдалы болатын кейбір нақты жағдайларды қарастырайық.
Әдетте Dockerfile қажет болатын кез келген орын құрастыру бумасын пайдалану мүмкіндігі болып табылады. Мысалдар мыналарды қамтиды:
- Node.js веб-бағдарламасы
- Python микросервисі
- Бірнеше тілдерді немесе фреймворктарды пайдаланатын гетерогенді қолданба
- AWS, Azure және Heroku сияқты бұлттық платформаларда орналастыруға арналған қолданбаларды құру
Айта кету керек, бұл: құрастыру пакеттері декларативті болғанымен, Docker файлдары процедуралық . Құрастыру бумасы арқылы сіз жай ғана берілген құрастырушымен немесе құрастыру пакетімен жасалған берілген қолданбаны қалайтыныңызды мәлімдейсіз. Керісінше, Dockerfile қолданбаңызды құру үшін пәрмендерді және сол пәрмендердің орындалу ретін анықтауды талап етеді. Осылайша, құрастыру пакеттері қазіргі уақытта Dockerfile ішінде қол жетімді конфигурациялау деңгейін ұсынбайды, сондықтан ол кейбір кеңейтілген пайдалану жағдайларының қажеттіліктерін қанағаттандырмауы мүмкін.
Айтуынша, Cloud Native Buildpacks көмегімен жеткізушінің құлыптауы жоқ. Олар жай ғана OCI бейнесін жасайды. Құрастыру бумасындағыдан көбірек теңшеу мен опциялар қажет пе? Құрастыру құбырындағы құрастырушыны Dockerfile және стандартты OCI кескін құрастыруымен жай ғана ауыстырыңыз, сонда баруға болады.
Қарапайым шолу
Cloud Native Buildpacks пайдалану жолын жылдам көрсетейік.
Қолданба әзірлеушісі ретінде құрастыру пакеттерін пайдалануды бастау үшін бірінші қадамыңыз Pack CLI құралын орнату болуы керек. Бұл құрал құрастыру пакеттері бар қосымшаны құруға мүмкіндік береді. Амалдық жүйеңіз үшін орнату нұсқауларын орындаңыз.
Бұған қоса, ол әлі жоқ болса, құрастырушыға қолданбаңызды құру және кескініңізді іске қосу үшін сізге Docker демоны қажет болады. Осы екі құрал орнатылған болса, сіз бастауға дайынсыз.
Үлгі қолданбасын жасаңыз
pack
құралына қол жеткізу арқылы үлгі қолданбаны құрастыру арқылы оны сынап көруге дайынсыз. Мен мұны Next.js қолданбасында іске қосамын. Құрастыру бумасын тексеру үшін үлгі қолданба қажет пе? Мұнда Next.js үлгі қолданбаларының толық каталогы берілген . Сондай-ақ қолыңызда бар кез келген қолданбаны сынап көруге болады.
Қолданбаңыз дайын болғаннан кейін пакет құралы қандай құрастырушы ұсынатынын көруден бастаңыз. Қабықшаңызда қолданбалар каталогына өтіп, мына пәрменді іске қосыңыз:
$ pack builder suggest
Менің Ubuntu орнатуымда Next.js қолданбасы үшін pack
құралы келесі құрастырушыларды ұсынады:
Ұсынылған Heroku құрастыру пакетін қолданып көрейік ( heroku/builder:24
). Мұны пайдалану үшін келесі пәрменді іске қосыңыз:
$ pack build my-app --builder heroku/builder:24
Құрастыру уақыты қолданбаның өлшеміне байланысты өзгереді; мен үшін қолданбаны құру 30 секундқа созылды. Осымен менің образым баруға дайын болды. Біз кескінді келесідей іске қоса аламыз:
$ docker run -p 3000:3000 my-app
Нәтиже келесідей көрінеді:
Міне, солай! Next.js қолданбасының OCI кескінін Dockerfile қолданбастан сәтті құрастырдық.
Қосымша конфигурациялар
Buildpack ішінде бірдеңені конфигурациялау қажет болса ше? Ол үшін сіз құрастырушы таңдаған жинақ(тар)ға сілтеме жасайсыз. Мысалы, Next.js қолданбам үшін мен журналдардан құрастырушы екі құрастыру бумасын таңдағанын көре аламын: nodejs-engine және nodejs-yarn .
Мен құрастыру пакеті пайдаланатын иірілген жіп нұсқасын көрсеткім келеді делік. Біріншіден, мен nodejs-yarn buildpack Readme бөліміне барар едім, онда мен package.json
файлымдағы иірілген жіп нұсқасын packageManager
кілтімен көрсете алатынымды көремін. Мен файлымды келесідей етіп өзгертетін едім:
{ "packageManager": "[email protected]" }
Сол жерден маған тек pack build my-app --builder heroku/builder:24
қайта іске қосу керек.
Қорытынды
Cloud Native Buildpacks - қолданбаларымыз үшін контейнер кескіндерін құрудың қызықты жаңа тәсілі. Dockerfile қажеттілігін жою арқылы олар біздің қолданбаны пакеттеп, орналастыруды бұрынғыдан да жылдамырақ етеді. Сонымен қатар, олар стандартты контейнер кескіндерін құрастырғандықтан, сатушыға тыйым салынбайды.
Cloud Native Buildpacks көптеген платформаларда алдын ала қарауда, яғни мүмкіндіктер жиынтығы жеңіл, бірақ тез дамып келеді. Cloud Native Buildpacks-ті ашық көзімен қамтамасыз еткен Heroku оларды келесі ұрпақ платформасына да әкеледі. Мен Cloud Native Buildpacks бұлттық платформа қауымдастығында қауіпсіз, жылдам қолданбаларды орналастыруға қалай мүмкіндік беретінін көруді асыға күтемін.