कुछ दिन पहले स्प्रिंग बूट 2.3.0.M1 जारी किया गया था, जिसमें से पहली पंक्ति में क्लाउड नेटिव बिल्डपैक परियोजना के लिए समर्थन का उल्लेख है, जो डेवलपर के जीवन को सरल बनाने का प्रयास है, जो कि स्रोत कोड के साथ छवियों के संयोजन को यथासंभव स्वचालित करने की अनुमति देता है। चूँकि हमारे वर्तमान प्रोजेक्ट पर हमारे माइक्रोसर्विस को कंटेनरों में रहना है, इसलिए मैंने इसे आजमाने का फैसला किया और बताया कि इसके क्या फायदे हैं। कटौती के तहत एक छोटी निरंतरता।
क्लाउड नेटिव बिल्डपैक (CNB) डेवलपर को अपने स्वयं के डॉकरफाइल को लिखने या समर्थन करने की अनुमति नहीं देता है। CNB प्रोजेक्ट का निर्माण करने वाली एकमात्र टीम लॉन्च करके, यह निर्धारित करेगी कि कौन सी निर्भरता एक छवि में इकट्ठा होती है। यह इस तरह दिखता है:

इसके अलावा, विभिन्न तकनीकों के कारण: ओसीआई समर्थन, मॉड्यूलर संरचना, निर्भरता परतों के कैशिंग - सीएनबी प्रणाली का व्यापक रूप से उपयोग किया जा सकता है और, डेवलपर्स के अनुसार, बहुत तेज है।
आइए देखें कि वह वास्तव में क्या है। साइट start.spring.io खाली प्रोजेक्ट डाउनलोड करें। यह निर्भर करने के लिए एक चुटकी जोड़ें कि क्या हमारा कंटेनर बिल्कुल काम करता है।
यह वह जगह है जहां तैयारी हमारे लिए समाप्त होती है - हमारा आवेदन कंटेनर में प्लेसमेंट के लिए तैयार है। ऐसा करने के लिए,
"./gradlew bootBuildImage" या
मावेन के लिए
रनिंग करें। "। Mvnw स्प्रिंग-बूट: बिल्ड-इमेज" और असेंबली शुरू होती है। असेंबली के बाद, हमें पूरी प्रक्रिया के विवरण के साथ एक सुविधाजनक लॉग मिलता है।
प्रारंभ में, प्लगइन को आवश्यक मूल कलाकृतियाँ मिलती हैं:> Task :bootBuildImage Building image 'docker.io/library/cnb:0.0.1-SNAPSHOT' > Pulling builder image 'docker.io/cloudfoundry/cnb:0.0.43-bionic' .................................................. > Pulled builder image 'cloudfoundry/cnb@sha256:c983fb9602a7fb95b07d35ef432c04ad61ae8458263e7fb4ce62ca10de367c3b' > Pulling run image 'docker.io/cloudfoundry/run:base-cnb' .................................................. > Pulled run image 'cloudfoundry/run@sha256:ba9998ae4bb32ab43a7966c537aa1be153092ab0c7536eeef63bcd6336cbd0db' > Executing lifecycle version v0.5.0 > Using build cache volume 'pack-cache-7cfae5296b92.build'
डिटेक्टर लॉन्च किए जाते हैं जो परियोजना को स्कैन करते हैं और निर्धारित करते हैं कि अतिरिक्त रूप से इकट्ठा करने के लिए कौन सी निर्भरताएं हैं: > Running detector [detector] 6 of 13 buildpacks participating [detector] org.cloudfoundry.openjdk v1.0.80 [detector] org.cloudfoundry.jvmapplication v1.0.113 [detector] org.cloudfoundry.tomcat v1.1.74 [detector] org.cloudfoundry.springboot v1.0.157 [detector] org.cloudfoundry.distzip v1.0.144 [detector] org.cloudfoundry.springautoreconfiguration v1.0.159
निर्भरताएं डाउनलोड होती हैं और विधानसभा शुरू होती है: > Running builder [builder] [builder] Cloud Foundry OpenJDK Buildpack v1.0.80 [builder] OpenJDK JRE 11.0.5: Contributing to layer [builder] Downloading from https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%2B10/OpenJDK11U-jre_x64_linux_hotspot_11.0.5_10.tar.gz [builder] Verifying checksum [builder] Expanding to /layers/org.cloudfoundry.openjdk/openjdk-jre [builder] Writing JAVA_HOME to shared ... [builder] Cloud Foundry Spring Boot Buildpack v1.0.157 [builder] Spring Boot 2.3.0.M1: Contributing to layer [builder] Writing CLASSPATH to shared [builder] Process types: [builder] spring-boot: java -cp $CLASSPATH $JAVA_OPTS dev.ivanov.cnb.CnbApplication [builder] task: java -cp $CLASSPATH $JAVA_OPTS dev.ivanov.cnb.CnbApplication [builder] web: java -cp $CLASSPATH $JAVA_OPTS dev.ivanov.cnb.CnbApplication
छवि यहां जा रही है: > Running exporter [exporter] Adding layer 'app' [exporter] Adding layer 'config' [exporter] Adding layer 'launcher' [exporter] Adding layer 'org.cloudfoundry.openjdk:openjdk-jre' [exporter] Adding layer 'org.cloudfoundry.jvmapplication:executable-jar' [exporter] Adding layer 'org.cloudfoundry.springboot:spring-boot' [exporter] Adding layer 'org.cloudfoundry.springautoreconfiguration:auto-reconfiguration' [exporter] *** Images (2757ab54378d): [exporter] docker.io/library/cnb:0.0.1-SNAPSHOT
निर्भरताएँ कैश की गई हैं: > Running cacher [cacher] Caching layer 'org.cloudfoundry.openjdk:2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b' [cacher] Caching layer 'org.cloudfoundry.jvmapplication:executable-jar' [cacher] Caching layer 'org.cloudfoundry.springboot:spring-boot' [cacher] Caching layer 'org.cloudfoundry.springautoreconfiguration:46ab131165317d91fd4ad3186abf755222744e2d277dc413def06f3ad45ab150'
सफलतापूर्वक निर्मित छवि 'docker.io/library/cnbmail.0.1-SNAPSHOT'
25 के दशक में बनाया गया थाछवि पहले से ही डॉकटर में दिखाई दे रही है और उसे डॉक इमेज कमांड के साथ देखा जा सकता है और डॉक रन कर्ता चला सकता है -d -p 8080: 8080 imageid
हमारे आवेदन में नई निर्भरता जोड़ें और फिर से निर्माण करें।
सिस्टम कैश्ड परतों से होकर गुजरता है: > Running restorer [restorer] Restoring cached layer 'org.cloudfoundry.openjdk:2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b' [restorer] Restoring cached layer 'org.cloudfoundry.jvmapplication:executable-jar' [restorer] Restoring cached layer 'org.cloudfoundry.springboot:spring-boot' [restorer] Restoring cached layer 'org.cloudfoundry.springautoreconfiguration:46ab131165317d91fd4ad3186abf755222744e2d277dc413def06f3ad45ab150' > Running analyzer [analyzer] Using cached layer 'org.cloudfoundry.openjdk:2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b' [analyzer] Writing metadata for uncached layer 'org.cloudfoundry.openjdk:openjdk-jre' [analyzer] Using cached launch layer 'org.cloudfoundry.jvmapplication:executable-jar' [analyzer] Rewriting metadata for layer 'org.cloudfoundry.jvmapplication:executable-jar' [analyzer] Using cached launch layer 'org.cloudfoundry.springboot:spring-boot' [analyzer] Rewriting metadata for layer 'org.cloudfoundry.springboot:spring-boot' [analyzer] Using cached layer 'org.cloudfoundry.springautoreconfiguration:46ab131165317d91fd4ad3186abf755222744e2d277dc413def06f3ad45ab150' [analyzer] Writing metadata for uncached layer 'org.cloudfoundry.springautoreconfiguration:auto-reconfiguration'
परियोजना की विधानसभा अंतिम चरण के समान शुरू होती है:
> Running builder [builder] [builder] Cloud Foundry OpenJDK Buildpack v1.0.80 [builder] OpenJDK JRE 11.0.5: Reusing cached layer [builder] [builder] Cloud Foundry JVM Application Buildpack v1.0.113 [builder] Executable JAR: Reusing cached layer [builder] Process types: [builder] executable-jar: java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher [builder] task: java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher [builder] web: java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher [builder] [builder] Cloud Foundry Spring Boot Buildpack v1.0.157 [builder] Spring Boot 2.3.0.M1: Contributing to layer [builder] Writing CLASSPATH to shared [builder] Process types: [builder] spring-boot: java -cp $CLASSPATH $JAVA_OPTS dev.ivanov.cnb.CnbApplication [builder] task: java -cp $CLASSPATH $JAVA_OPTS dev.ivanov.cnb.CnbApplication [builder] web: java -cp $CLASSPATH $JAVA_OPTS dev.ivanov.cnb.CnbApplication [builder] [builder] Cloud Foundry Spring Auto-reconfiguration Buildpack v1.0.159 [builder] Spring Auto-reconfiguration 2.11.0: Reusing cached layer > Running exporter [exporter] Adding layer 'app' [exporter] Adding layer 'config' [exporter] Reusing layer 'launcher' [exporter] Reusing layer 'org.cloudfoundry.openjdk:openjdk-jre' [exporter] Reusing layer 'org.cloudfoundry.jvmapplication:executable-jar' [exporter] Adding layer 'org.cloudfoundry.springboot:spring-boot' [exporter] Reusing layer 'org.cloudfoundry.springautoreconfiguration:auto-reconfiguration' [exporter] *** Images (7a83fadad1ce): [exporter] docker.io/library/cnb:0.0.1-SNAPSHOT > Running cacher [cacher] Reusing layer 'org.cloudfoundry.openjdk:2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b' [cacher] Reusing layer 'org.cloudfoundry.jvmapplication:executable-jar' [cacher] Caching layer 'org.cloudfoundry.springboot:spring-boot' [cacher] Reusing layer 'org.cloudfoundry.springautoreconfiguration:46ab131165317d91fd4ad3186abf755222744e2d277dc413def06f3ad45ab150'
सफलतापूर्वक निर्मित छवि 'docker.io/library/cnbmail.0.1-SNAPSHOT'
20 के दशक में निर्माण सफलताअसेंबली में अतिरिक्त निर्भरता की उपस्थिति के बावजूद, विधानसभा की तुलना में पिछले तेजी से इकट्ठा किया गया था - सभी कंटेनर परतों के पुन: उपयोग के लिए धन्यवाद।
परिणामी छवि का अधिक विस्तार से अध्ययन करने के लिए, आपको
यहां से उपयोगिता
पैक डाउनलोड करने और अपनी
छवि के अंदर देखने के लिए
निरीक्षण-छवि कमांड
का उपयोग करने की आवश्यकता है:
"name": "openjdk-jre", "version": "11.0.5", "metadata": { "licenses": [ { "type": "GPL-2.0 WITH Classpath-exception-2.0", "uri": "https://openjdk.java.net/legal/gplv2+ce.html" } ], "name": "OpenJDK JRE", "sha256": "2f08c469c9a8adea1b6ee3444ba2a8242a7e99d87976a077faf037a9eb7f884b", "stacks": [ "io.buildpacks.stacks.bionic", "org.cloudfoundry.stacks.cflinuxfs3" ], "uri": "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.5%!B(MISSING)10/OpenJDK11U-jre_x64_linux_hotspot_11.0.5_10.tar.gz" }, "buildpack": { "id": "org.cloudfoundry.openjdk", "version": "v1.0.80" } }, { "name": "executable-jar", "version": "", "metadata": { "classpath": [ "/workspace" ], "main-class": "org.springframework.boot.loader.JarLauncher" }, "buildpack": { "id": "org.cloudfoundry.jvmapplication", "version": "v1.0.113" }
मेटाडेटा डेटा इंगित करता है कि छवि में क्या निहित है, प्रत्येक परत में क्या है, और यह कैसे बनाया गया था। यह सुरक्षा के लिए एक असंदिग्ध प्लस है, क्योंकि प्रत्येक छवि की संरचना ज्ञात है और "बाएं" पुस्तकालयों पर हिट को बाहर करती है।
इस प्रकार, क्लाउड नेटिव बिल्डपैक, मुख्य रूप से स्प्रिंग बूट पर, माइक्रोवेस्टर डेवलपर्स के लिए काफी दिलचस्प कार्यक्षमता प्रदान करता है, क्योंकि पिवटल विकसित हो रहा है, जिसका अर्थ है कि सब कुछ समर्थन के साथ ठीक होगा। लेकिन यह भी उल्लेखनीय है कि CNB अन्य रूपरेखाओं और भाषाओं के साथ संगत है।