ለፀደይ ቡት መተግበሪያ የተመቻቹ የዶክተር ምስሎችን መገንባት

ኮንቴይነሮች አፕሊኬሽኑን ከሁሉም የሶፍትዌር እና የስርዓተ ክወና ጥገኞች ጋር በማሸግ ወደ ተለያዩ አካባቢዎች ለማድረስ ተመራጭ መንገዶች ሆነዋል።

ይህ ጽሑፍ የስፕሪንግ ቡት መተግበሪያን ወደ መያዣ ለማስገባት የተለያዩ መንገዶችን ይሸፍናል።

  • Docker ፋይልን በመጠቀም Docker ምስል መፍጠር ፣
  • Cloud-Native Buildpackን በመጠቀም የOCI ምስል ከምንጩ መፍጠር፣
  • እና ባለብዙ ደረጃ መሳሪያዎችን በመጠቀም የJAR ክፍሎችን ወደ ተለያዩ ንብርብሮች በመለየት የአሂድ ምስል ማመቻቸት።

 á‹¨áŠŽá‹ľ ምሳሌ

ይህ ጽሑፍ ከስራ ኮድ ምሳሌ ጋር አብሮ ይመጣል á‰  GitHub ላይ .

የመያዣ ቃላት

በአንቀጹ ውስጥ ጥቅም ላይ የዋለውን የመያዣ ቃላትን እንጀምራለን-

  • የመያዣ ምስል: የአንድ የተወሰነ ቅርጸት ፋይል. የግንባታ መሳሪያውን በማስኬድ መተግበሪያችንን ወደ መያዣ ምስል እንለውጣለን.
  • ኮንቴይነርየመያዣው ምስል ሊተገበር የሚችል ምሳሌ።
  • የመያዣ ሞተር: መያዣውን ለማስኬድ ሃላፊነት ያለው የዴሞን ሂደት.
  • የመያዣ አስተናጋጅ: ኮንቴይነሩ ሞተር የሚሠራበት አስተናጋጅ ኮምፒዩተር.
  • የመያዣ መዝገብየመያዣውን ምስል ለማተም እና ለማሰራጨት የሚያገለግል አጠቃላይ ቦታ።
  • OCI መደበኛክፍት ኮንቴይነር ተነሳሽነት (OCI) በሊኑክስ ፋውንዴሽን ውስጥ የተቋቋመ ቀላል ክብደት ያለው ክፍት የአስተዳደር መዋቅር ነው። ሁሉም የመያዣ ሞተሮች በማንኛውም የግንባታ መሳሪያ የተፈጠሩ የእቃ መያዢያ ምስሎችን ማሄድ እንደሚችሉ ለማረጋገጥ የOCI ምስል ዝርዝር ለኮንቴይነር ምስል እና የአሂድ ጊዜ ቅርጸቶች የኢንዱስትሪ ደረጃዎችን ይገልጻል።

አፕሊኬሽኑን ወደ መያዣ (ኮንቴይነር) ለማድረግ፣ የእኛን መተግበሪያ በኮንቴይነር ምስል እናጠቅለዋለን እና ምስሉን ወደ የጋራ መዝገብ ቤት እናተምታለን። የኮንቴይነር አሂድ ጊዜ ይህን ምስል ከመዝገቡ ውስጥ አውጥቶ ማውጣቱን እና መተግበሪያውን በውስጡ ያስኬዳል።

የስፕሪንግ ቡት ስሪት 2.3 የ OCI ምስሎችን ለመፍጠር ተሰኪዎችን ያቀርባል።

Docker በብዛት ጥቅም ላይ የሚውለው የመያዣ ትግበራ ነው, እና በእኛ ምሳሌዎች Docker እንጠቀማለን, ስለዚህ በዚህ ጽሑፍ ውስጥ ያሉት ሁሉም ተከታይ የመያዣ ማጣቀሻዎች Dockerን ይጠቅሳሉ.

የእቃ መያዣ ምስል በባህላዊ መንገድ መገንባት

ለSፕሪንግ ቡት አፕሊኬሽኖች Docker ምስሎችን መፍጠር ጥቂት መመሪያዎችን ወደ Docker ፋይል በማከል በጣም ቀላል ነው።

መጀመሪያ ሊተገበር የሚችል JAR ፋይል እንፈጥራለን እና እንደ Docker ፋይል መመሪያዎች አካል አስፈላጊዎቹን መቼቶች ከተጠቀምን በኋላ የሚፈፀመውን JAR ፋይል በመሠረታዊው JRE ምስል ላይ እንቀዳለን።

የፀደይ መተግበሪያችንን በ ላይ እንፍጠር áŒ¸á‹°á‹­ መጀመሪያ áŠ¨áŒĽáŒˆáŠ›á‹Žá‰˝ ጋር weblombokи actuator. ኤፒአይ ለማቅረብ የእረፍት መቆጣጠሪያ እየጨመርን ነው። GETዘዴ.

Dockerfile መፍጠር

ከዚያም ይህን መተግበሪያ በማከል መያዣ እናደርጋለን Dockerfile:

FROM adoptopenjdk:11-jre-hotspot
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/application.jar"]

የእኛ Docker ፋይል ከ የመሠረት ምስል ይዟል adoptopenjdkበላዩ ላይ የጃአር ፋይላችንን ገልብጠን ወደቡን እንከፍታለን። 8080ጥያቄዎችን የሚያዳምጥ.

ማመልከቻውን በመገንባት ላይ

መጀመሪያ Maven ወይም Gradle በመጠቀም መተግበሪያ መፍጠር ያስፈልግዎታል። እዚህ ማቨን እንጠቀማለን-

mvn clean package

ይህ ለመተግበሪያው ተፈጻሚ የሆነ የJAR ፋይል ይፈጥራል። በ Docker ሞተር ላይ ለመስራት ይህንን ተፈጻሚ JAR ወደ Docker ምስል መለወጥ አለብን።

የመያዣ ምስል መፍጠር

ከዚያ ትዕዛዙን በማስኬድ ይህንን ተፈጻሚ የ JAR ፋይል ወደ Docker ምስል እናስቀምጠዋለን docker buildከዚህ ቀደም የተፈጠረውን Dockerfile ከያዘው የፕሮጀክት ስር ማውጫ፡-

docker build  -t usersignup:v1 .

ትዕዛዙን በመጠቀም ምስላችንን በዝርዝሩ ውስጥ ማየት እንችላለን-

docker images 

ከላይ ያለው ትዕዛዝ ውፅዓት የእኛን ምስል ያካትታል usersignupከመሠረቱ ምስል ጋር ፣ adoptopenjdkበእኛ Docker ፋይል ውስጥ ተገልጿል.

REPOSITORY          TAG                 SIZE
usersignup          v1                  249MB
adoptopenjdk        11-jre-hotspot      229MB

በመያዣ ምስል ውስጥ ንብርብሮችን ይመልከቱ

በምስሉ ውስጥ ያሉትን የንብርብሮች ቁልል እንይ። እንጠቀማለን áˆ˜áˆŁáˆŞá‹Ť  áˆ˜áˆľáˆ˜áŒĽ áŠĽáŠá‹šáˆ…ን ንብርብሮች ለማየት፡-

dive usersignup:v1

ከዳይቭ ትዕዛዝ የሚገኘው የውጤት አካል ይኸውና፡- 

ለፀደይ ቡት መተግበሪያ የተመቻቹ የዶክተር ምስሎችን መገንባት

እንደምናየው፣ የመተግበሪያው ንብርብር የምስሉን መጠን ጉልህ የሆነ ክፍል ይይዛል። እንደ የማመቻቸት አካል በሚከተሉት ክፍሎች ውስጥ የዚህን ንብርብር መጠን መቀነስ እንፈልጋለን.

Buildpackን በመጠቀም የመያዣ ምስል መፍጠር

የመሰብሰቢያ ፓኬጆች (የግንባታ ቦርሳዎች) የመያዣ ምስል ከምንጭ ኮድ ለመፍጠር በተለያዩ የመሣሪያ ስርዓቶች እንደ አገልግሎት (PAAS) አቅርቦቶች የሚጠቀሙበት አጠቃላይ ቃል ነው። በ2011 በሄሮኩ ስራ የጀመረ ሲሆን ከዚያን ጊዜ ጀምሮ በ Cloud Foundry፣ Google App Engine፣ Gitlab፣ Knative እና ሌሎች በርካታ ተቀባይነት አግኝቷል።

ለፀደይ ቡት መተግበሪያ የተመቻቹ የዶክተር ምስሎችን መገንባት

የደመና ግንባታ ፓኬጆች ጥቅም

ምስሎችን ለመፍጠር Buildpackን መጠቀም ከዋና ዋናዎቹ ጥቅሞች አንዱ ነው። á‹¨áˆáˆľáˆ ውቅር ለውጦች በማእከላዊ (ገንቢ) ማስተዳደር እና ገንቢን በመጠቀም ወደ ሁሉም መተግበሪያዎች ሊሰራጭ ይችላል።

የግንባታ ፓኬጆች ከመድረክ ጋር በጥብቅ ተጣብቀዋል. Cloud-Native Buildpacks የ OCI ምስል ቅርጸትን በመደገፍ በመድረኮች ላይ ደረጃውን የጠበቀ አሰራርን ያቀርባል ይህም ምስሉ በ Docker ሞተር እንዲሰራ ያረጋግጣል.

የፀደይ ቡት ተሰኪን በመጠቀም

የስፕሪንግ ቡት ፕለጊን Buildpackን በመጠቀም የOCI ምስሎችን ከምንጩ ይገነባል። ምስሎች የተፈጠሩት በመጠቀም ነው። bootBuildImageተግባራት (ግራድል) ወይም spring-boot:build-imageዒላማዎች (Maven) እና የአካባቢ Docker ጭነት.

በ ውስጥ ያለውን ስም በመጥቀስ ወደ Docker መዝገብ ቤት ለመግፋት የሚያስፈልገውን የምስሉን ስም ማበጀት እንችላለን image tag:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <image>
      <name>docker.io/pratikdas/${project.artifactId}:v1</name>
    </image>
  </configuration>
</plugin>

እሱን ለመስራት Mavenን እንጠቀም build-imageመተግበሪያን ለመፍጠር እና የመያዣ ምስል ለመፍጠር ግቦች። በዚህ ጊዜ ምንም Dockerfiles አንጠቀምም።

mvn spring-boot:build-image

ውጤቱ እንደዚህ ያለ ነገር ይሆናል-

[INFO] --- spring-boot-maven-plugin:2.3.3.RELEASE:build-image (default-cli) @ usersignup ---
[INFO] Building image 'docker.io/pratikdas/usersignup:v1'
[INFO] 
[INFO]  > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base-platform-api-0.3' 0%
.
.
.. [creator]     Adding label 'org.springframework.boot.version'
.. [creator]     *** Images (c311fe74ec73):
.. [creator]           docker.io/pratikdas/usersignup:v1
[INFO] 
[INFO] Successfully built image 'docker.io/pratikdas/usersignup:v1'

ከም ውጽኢቱ ድማ ስለምንታይ ኢና paketo Cloud-Native buildpackየሚሰራ OCI ምስል ለመፍጠር ያገለግል ነበር። እንደበፊቱ፣ ትዕዛዙን በማስኬድ እንደ ዶከር ምስል የተዘረዘረውን ምስል ማየት እንችላለን፡-

docker images 

ማጠቃለያ:

REPOSITORY                             SIZE
paketobuildpacks/run                  84.3MB
gcr.io/paketo-buildpacks/builder      652MB
pratikdas/usersignup                  257MB

Jib በመጠቀም መያዣ ምስል መፍጠር

ጂብ ከGoogle የመጣ የምስል ፈጠራ ፕለጊን ሲሆን የመያዣ ምስል ከምንጭ ኮድ ለመፍጠር አማራጭ ዘዴን ይሰጣል።

በማዋቀር ላይ jib-maven-pluginበፖም.xml፡-

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>

በመቀጠል, አፕሊኬሽኑን ለመገንባት እና የመያዣ ምስል ለመፍጠር የ Maven ትዕዛዝን በመጠቀም የጂብ ፕለጊን እንሰራለን. እንደበፊቱ፣ እዚህ ምንም Docker ፋይሎችን እየተጠቀምን አይደለም፡

mvn compile jib:build -Dimage=<docker registry name>/usersignup:v1

ከላይ ያለውን የ Maven ትዕዛዝ ከፈጸምን በኋላ የሚከተለውን ውጤት እናገኛለን:

[INFO] Containerizing application to pratikdas/usersignup:v1...
.
.
[INFO] Container entrypoint set to [java, -cp, /app/resources:/app/classes:/app/libs/*, io.pratik.users.UsersignupApplication]
[INFO] 
[INFO] Built and pushed image as pratikdas/usersignup:v1
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete

ውጤቱ እንደሚያሳየው የመያዣው ምስል መፈጠሩን እና በመዝገቡ ውስጥ መቀመጡን ነው.

የተመቻቹ ምስሎችን ለመፍጠር ተነሳሽነት እና ቴክኒኮች

ለማመቻቸት ሁለት ዋና ምክንያቶች አሉን።

  • ምርታማነት: በኮንቴይነር ኦርኬስትራ ሲስተም ውስጥ የእቃ መያዢያ ምስል ከምስል መዝገብ ቤት ወደ ኮንቴይነር ሞተር ወደሚያሄደው አስተናጋጅ ይወጣል። ይህ ሂደት እቅድ ማውጣት ይባላል. ትላልቅ ምስሎችን ከመዝገቡ ውስጥ ማውጣት በኮንቴይነር ኦርኬስትራ ስርዓቶች እና በ CI ቧንቧዎች ውስጥ ረጅም ጊዜ የመቆየት ጊዜን ያስገኛል.
  • ደህንነትትላልቅ ምስሎች ለደካማነት ትልቅ ቦታም አላቸው።

የዶከር ምስል የንብርብሮች ቁልል አለው፣እያንዳንዳቸውም በእኛ ዶከርፋይል ውስጥ መመሪያን ይወክላሉ። áŠĽá‹ŤáŠ•á‹łáŠ•á‹ą ሽፋን በታችኛው ሽፋን ላይ ያሉትን ለውጦች አንድ ዴልታ ይወክላል። የዶከር ምስል ከመዝገቡ ውስጥ ስንጎተት በንብርብሮች ተስቦ በአስተናጋጁ ላይ ተሸፍኗል።

ስፕሪንግ ቡት ይጠቀማል "ወፍራም JAR" ውስጥ áŠĽáŠ•á‹° ነባሪው የማሸጊያ ቅርጸት. ወፍራም JARን ስንመለከት፣ አፕሊኬሽኑ ከጠቅላላው JAR ውስጥ በጣም ትንሽ ክፍል እንደያዘ እናያለን። ብዙ ጊዜ የሚለወጠው ይህ ክፍል ነው። ቀሪው የፀደይ ማዕቀፍ ጥገኝነቶችን ያካትታል።

የማመቻቸት ቀመሩ አፕሊኬሽኑን ከስፕሪንግ ማዕቀፍ ጥገኞች በተለየ ደረጃ በማግለል ላይ ያተኩራል።

አብዛኛው የወፍራም JAR ፋይል የሆነው የጥገኝነት ንብርብር አንድ ጊዜ ብቻ ወርዶ በአስተናጋጅ ስርዓቱ ላይ ተደብቋል።

በመተግበሪያ ማሻሻያ እና በመያዣ መርሐግብር ወቅት የመተግበሪያው ቀጭን ንብርብር ብቻ ይሳባል። á‰ á‹šáˆ… ሥዕል ላይ እንደሚታየው፡-

ለፀደይ ቡት መተግበሪያ የተመቻቹ የዶክተር ምስሎችን መገንባት

በሚቀጥሉት ክፍሎች እነዚህን የተመቻቹ ምስሎች ለስፕሪንግ ቡት መተግበሪያ እንዴት መፍጠር እንደምንችል እንመለከታለን።

Buildpackን በመጠቀም ለስፕሪንግ ማስነሻ መተግበሪያ የተመቻቸ የኮንቴይነር ምስል መፍጠር

ስፕሪንግ ቡት 2.3 ወፍራም የጃአር ፋይል ክፍሎችን ወደ ተለያዩ ንብርብሮች በማውጣት መደራረብን ይደግፋል። የንብርብር ባህሪው በነባሪነት ተሰናክሏል እና የSpring Boot Maven ተሰኪን በመጠቀም በግልፅ መንቃት አለበት።

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <layers>
      <enabled>true</enabled>
    </layers>
  </configuration> 
</plugin>

ይህንን ውቅረት በመጠቀም የመያዣ ምስላችንን በመጀመሪያ Buildpack እና በመቀጠል በ Docker በሚከተሉት ክፍሎች እንገነባለን።

እንጀምር build-imageየመያዣ ምስል ለመፍጠር Maven ዒላማ:

mvn spring-boot:build-image

በውጤቱ ምስል ላይ ያሉትን ንብርብሮች ለማየት ዳይቭን ብንሮጥ፣ የመተግበሪያው ንብርብር (በቀይ የተገለፀው) በኪሎባይት ክልል ውስጥ ወፍራም የጃአር ቅርጸትን በመጠቀም ካገኘነው ጋር ሲነፃፀር በጣም ትንሽ መሆኑን እናያለን።

ለፀደይ ቡት መተግበሪያ የተመቻቹ የዶክተር ምስሎችን መገንባት

Dockerን በመጠቀም ለፀደይ ቡት መተግበሪያ የተመቻቸ የመያዣ ምስል መፍጠር

የ Maven ወይም Gradle ፕለጊን ከመጠቀም፣ የተነባበረ Docker JAR ምስል ከDocker ፋይል ጋር መፍጠር እንችላለን።

ዶከርን ስንጠቀም ንብርቦቹን ለማውጣት እና ወደ መጨረሻው ምስል ለመቅዳት ሁለት ተጨማሪ እርምጃዎችን ማከናወን አለብን.

ማቨን ከተገነባ በኋላ የተከፈተው የጃአር ይዘት ይህን ይመስላል፡-

META-INF/
.
BOOT-INF/lib/
.
BOOT-INF/lib/spring-boot-jarmode-layertools-2.3.3.RELEASE.jar
BOOT-INF/classpath.idx
BOOT-INF/layers.idx

ውጤቱም የተሰየመ ተጨማሪ JAR ያሳያል spring-boot-jarmode-layertoolsи layersfle.idxፋይል. ይህ ተጨማሪ የJAR ፋይል በሚቀጥለው ክፍል እንደተገለጸው የተደራረቡ የማቀናበር ችሎታዎችን ያቀርባል።

በግለሰብ ንብርብሮች ላይ ጥገኛዎችን ማውጣት

ንብርብሮችን ከኛ ከተነባበረ JAR ለማየት እና ለማውጣት፣ የስርዓቱን ባህሪ እንጠቀማለን። -Djarmode=layertoolsለመጀመር spring-boot-jarmode-layertoolsJAR ከማመልከቻው ይልቅ፡-

java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar

ይህንን ትእዛዝ ማስኬድ ያሉትን የትዕዛዝ አማራጮችን የያዘ ውጤት ያስገኛል፡-

Usage:
  java -Djarmode=layertools -jar usersignup-0.0.1-SNAPSHOT.jar

Available commands:
  list     List layers from the jar that can be extracted
  extract  Extracts layers from the jar for image creation
  help     Help about any command

ውጤቱ ትዕዛዞቹን ያሳያል listextractи helpс helpነባሪ ሁን። ትዕዛዙን እናስኬድ listአማራጭ፡-

java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar list
dependencies
spring-boot-loader
snapshot-dependencies
application

እንደ ንብርብር ሊጨመሩ የሚችሉ የጥገኛዎች ዝርዝር እንመለከታለን.

ነባሪ ንብርብሮች፡

የንብርብር ስም

ይዘቶች

dependencies

ስሪቱ SNAPSHOT ያልያዘ ማንኛውም ጥገኝነት

spring-boot-loader

JAR ጫኚ ክፍሎች

snapshot-dependencies

ስሪቱ SNAPSHOT የያዘ ማንኛውም ጥገኝነት

application

የመተግበሪያ ክፍሎች እና ሀብቶች

ንብርብሮች የተገለጹት በ layers.idxወደ ዶከር ምስል መጨመር እንዳለባቸው በቅደም ተከተል ፋይል ያድርጉ። እነዚህ ንብርብሮች ከመጀመሪያው መልሶ ማግኘት በኋላ በአስተናጋጁ ውስጥ ተደብቀዋል ምክንያቱም አይለወጡም. á‹¨á‰°á‹˜áˆ˜áŠá‹ የመተግበሪያ ንብርብር ብቻ ወደ አስተናጋጁ ይወርዳል፣ ይህም በተቀነሰ መጠን ፈጣን ነው። .

ወደ ተለያዩ ንብርብሮች ከተወሰዱ ጥገኞች ጋር ምስል መገንባት

በተጠራው ዘዴ በመጠቀም የመጨረሻውን ምስል በሁለት ደረጃዎች እንገነባለን á‰Łáˆˆá‰Ľá‹™ ደረጃ ስብሰባ . በመጀመሪያው ደረጃ ጥገኞችን እናወጣለን እና በሁለተኛው ደረጃ የተወገዱትን ጥገኞች ወደ መጨረሻው ምስል እንገለብጣለን.

የእኛን Dockerfile ለብዙ ደረጃ ግንባታ እናስተካክለው፡-

# the first stage of our build will extract the layers
FROM adoptopenjdk:14-jre-hotspot as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract

# the second stage of our build will copy the extracted layers
FROM adoptopenjdk:14-jre-hotspot
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]

ይህንን ውቅር በተለየ ፋይል ውስጥ እናስቀምጠዋለን - Dockerfile2.

ትዕዛዙን በመጠቀም Docker ምስሉን እንገነባለን-

docker build -f Dockerfile2 -t usersignup:v1 .

ይህንን ትዕዛዝ ከጨረስን በኋላ የሚከተለውን ውጤት እናገኛለን:

Sending build context to Docker daemon  20.41MB
Step 1/12 : FROM adoptopenjdk:14-jre-hotspot as builder
14-jre-hotspot: Pulling from library/adoptopenjdk
.
.
Successfully built a9ebf6970841
Successfully tagged userssignup:v1

Docker ምስል በምስል መታወቂያ ሲፈጠር እና ከዚያ መለያ ሲደረግ ማየት እንችላለን።

በመጨረሻም፣ በተፈጠረው Docker ምስል ውስጥ ያሉትን ንብርብሮች ለመፈተሽ የዳይቭ ትዕዛዙን እንደበፊቱ እንሰራለን። የምስል መታወቂያ ማቅረብ ወይም ለዳይቭ ትዕዛዝ እንደ ግብአት መለያ መስጠት እንችላለን፡-

dive userssignup:v1

በውጤቱ ላይ እንደሚታየው, አፕሊኬሽኑን የያዘው ንብርብር አሁን 11 ኪባ ብቻ ነው, እና ጥገኛዎች በተለየ ንብርብሮች ውስጥ ተደብቀዋል. 

ለፀደይ ቡት መተግበሪያ የተመቻቹ የዶክተር ምስሎችን መገንባት

በግለሰብ ንብርብሮች ላይ ውስጣዊ ጥገኛዎችን ማውጣት

ማናቸውንም ብጁ ጥገኞቻችንን በማውጣት ከማመልከቻው ጋር ከማሸግ ይልቅ ወደ ተለየ ደረጃ በማውጣት የመተግበሪያውን እርከን መጠን መቀነስ እንችላለን። ymlተመሳሳይ ፋይል ተሰይሟል layers.idx:

- "dependencies":
  - "BOOT-INF/lib/"
- "spring-boot-loader":
  - "org/"
- "snapshot-dependencies":
- "custom-dependencies":
  - "io/myorg/"
- "application":
  - "BOOT-INF/classes/"
  - "BOOT-INF/classpath.idx"
  - "BOOT-INF/layers.idx"
  - "META-INF/"

በዚህ ፋይል ውስጥ layers.idxየተሰየመ ብጁ ጥገኝነት አክለናል፣ io.myorgከጋራ ማከማቻ የወጡ የድርጅት ጥገኞችን የያዘ።

መደምደሚያ

በዚህ ጽሑፍ ውስጥ የመያዣ ምስልን በቀጥታ ከምንጭ ኮድ ለመገንባት Cloud-Native Buildpacks ን በመጠቀም ተመልክተናል። ይህ በተለመደው መንገድ ዶከርን በመጠቀም የመያዣ ምስል ለመፍጠር አማራጭ ነው፡ በመጀመሪያ ወፍራም የሚተገበር JAR ፋይል መፍጠር እና ከዚያም በ Docker ፋይል ውስጥ መመሪያዎችን በመግለጽ ወደ መያዣ ምስል ማሸግ.

ጥገኞችን ወደ ተለያዩ ንብርብሮች የሚጎትት በአስተናጋጁ ላይ የተሸጎጠ እና ቀጭን የመተግበሪያ ንብርብር በኮንቴይነር ማስፈጸሚያ ሞተሮች ውስጥ በተያዘለት የጊዜ ሰሌዳ ላይ የሚጫነውን የንብርብር ባህሪን በማስቻል እቃችንን ማመቻቸትን ተመልክተናል።

በጽሁፉ ውስጥ ጥቅም ላይ የዋለውን ሁሉንም የምንጭ ኮድ በ ላይ ማግኘት ይችላሉ። á‹¨áŠáˆáˆ™ .

የትእዛዝ ማጣቀሻ

በዚህ ጽሑፍ ውስጥ የተጠቀምንባቸው የትእዛዞች ፈጣን ዝርዝር እነሆ።

የአውድ ማጽዳት፡

docker system prune -a

Docker ፋይልን በመጠቀም የመያዣ ምስል መፍጠር፡-

docker build -f <Docker file name> -t <tag> .

የመያዣውን ምስል ከምንጩ ኮድ (ያለ Dockerfile) እንገነባለን፡

mvn spring-boot:build-image

የጥገኝነት ንብርብሮችን ይመልከቱ። የመተግበሪያውን JAR ፋይል ከመገንባቱ በፊት፣ የንብርብር ባህሪው በፀደይ-ቡት-ማቨን-ፕለጊን ውስጥ መንቃቱን ያረጋግጡ፡-

java -Djarmode=layertools -jar application.jar list

የጥገኝነት ንብርብሮችን ማውጣት. የመተግበሪያውን JAR ፋይል ከመገንባቱ በፊት፣ የንብርብር ባህሪው በፀደይ-ቡት-ማቨን-ፕለጊን ውስጥ መንቃቱን ያረጋግጡ፡-

 java -Djarmode=layertools -jar application.jar extract

የመያዣ ምስሎችን ዝርዝር ይመልከቱ

docker images

በመያዣው ምስል ውስጥ በግራ በኩል ይመልከቱ (የዳይቭ መሳሪያው መጫኑን ያረጋግጡ)

dive <image ID or image tag>

ምንጭ: hab.com