แแแแขแแแแแ แแแ แแแฎแแ แฃแแแ แแขแแกแ แกแแจแฃแแแแแ แแแแแแแชแแแก แจแแคแฃแแแแก แงแแแแ แแแกแ แแ แแแ แแแฃแแ แแ แแแแ แแชแแฃแแ แกแแกแขแแแแก แแแแแแแแแแฃแแแแแ แแ แจแแแแแ แแแแ แแแฌแแแแแแก แกแฎแแแแแกแฎแแ แแแ แแแแจแ.
แแก แกแขแแขแแ แแแแชแแแก Spring Boot แแแแแแแชแแแก แแแแขแแแแแ แแแแชแแแก แกแฎแแแแแกแฎแแ แแแแแก:
- Docker แกแฃแ แแแแก แจแแฅแแแ Docker แคแแแแแก แแแแแงแแแแแแ,
- OCI แแแแแกแแฎแฃแแแแแก แจแแฅแแแ แฌแงแแ แแแแ Cloud-Native Buildpack-แแก แแแแแงแแแแแแ,
- แแ แแแจแแแแแก แแ แแก แแแแแกแแฎแฃแแแแแก แแแขแแแแแแชแแ JAR-แแก แแแฌแแแแแแก แกแฎแแแแแกแฎแแ แคแแแแแแ แแแแแงแแคแแ แแ แแแแแกแแ แแฃแแแแแ แฎแแแกแแฌแงแแแแแก แแแแแงแแแแแแ.
แแแแแก แแแแแแแแ
แแ แกแขแแขแแแก แแฎแแแแก แกแแแฃแจแแ แแแแแก แแแแแแแแ
แแแแขแแแแแ แแก แขแแ แแแแแแแแแ
แฉแแแ แแแแแฌแงแแแ แกแขแแขแแแจแ แแแแแงแแแแแฃแแ แแแแขแแแแแ แแก แขแแ แแแแแแแแแแ:
- แแแแขแแแแแ แแก แกแฃแ แแแ: แแแแแ แแขแฃแแ แคแแ แแแขแแก แคแแแแ. แฉแแแ แแแแแแแงแแแแ แฉแแแแก แแแแแแแชแแแก แแแแขแแแแแ แแก แกแฃแ แแแแ build แแแกแขแ แฃแแแแขแแก แแแจแแแแแ.
- แแแแขแแแแแ แ: แแแแขแแแแแ แแก แแแแแกแแฎแฃแแแแแก แจแแกแ แฃแแแแแแ แแแแแแแแ.
- แแแแขแแแแแ แแก แซแ แแแ: แแแแแแฃแ แ แแ แแชแแกแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แแแแขแแแแแ แแก แแแจแแแแแแ.
- แแแแขแแแแแ แแก แแแกแแแแซแแแ: แแแกแแแแซแแแ แแแแแแฃแขแแ แ, แ แแแแแแแช แแฃแจแแแแก แแแแขแแแแแ แแก แซแ แแแ.
- แแแแขแแแแแ แแก แ แแแกแขแ แ: แแแแแแ แแแแแแ แแแแ, แ แแแแแแช แแแแแแงแแแแแ แแแแขแแแแแ แแก แแแแแกแแฎแฃแแแแแก แแแแแกแแฅแแแงแแแแแแ แแ แแแกแแแ แชแแแแแแแ.
- OCI แกแขแแแแแ แขแ:
Open Container Initiative (OCI) แแ แแก แแกแฃแแฃแฅแ, แฆแแ แแแแ แแแแแแแแก แกแขแ แฃแฅแขแฃแ แ, แ แแแแแแช แฉแแแแงแแแแแแ Linux Foundation-แแก แคแแ แแแแแจแ. OCI แแแแแกแแฎแฃแแแแแก แกแแแชแแคแแแแชแแ แแแแกแแแฆแแ แแแก แแแแฃแกแขแ แแแก แกแขแแแแแ แขแแแก แแแแขแแแแแ แแก แแแแแกแแฎแฃแแแแแก แแ แแแจแแแแแก แคแแ แแแขแแแแกแแแแก, แ แแแ แฃแแ แฃแแแแแงแแก, แ แแ แแแแขแแแแแ แแก แงแแแแ แซแ แแแก แจแแฃแซแแแ แแฌแแ แแแแก แแแแขแแแแแ แแก แกแฃแ แแแแแ, แ แแแแแแแช แจแแฅแแแแแแ แแแแแกแแแแ แ แแแแกแขแ แฃแฅแชแแแก แฎแแแกแแฌแงแแแ.
แแแแแแแชแแแก แแแแขแแแแแ แแแแชแแแกแแแแก, แฉแแแ แแแฎแแแแ แฉแแแแก แแแแแแแชแแแก แแแแขแแแแแ แแก แกแฃแ แแแจแ แแ แแแฅแแแงแแแแ แแ แกแฃแ แแแก แกแแแ แแ แ แแแกแขแ แจแ. แแแแขแแแแแ แแก แแแจแแแแแก แแ แ แแแแแฆแแแก แแ แกแฃแ แแแก แ แแแกแขแ แแแแ, แฎแกแแแก แแแก แแ แแแฃแจแแแแก แแแแแแแชแแแก แแแกแจแ.
Spring Boot-แแก 2.3 แแแ แกแแ แแแแแแแแแ แแแแแแแขแแแก OCI แกแฃแ แแแแแแก แจแแกแแฅแแแแแแ.
แแแแขแแแแแ แแก แแแแแกแแฎแฃแแแแแก แแจแแแแแ แขแ แแแแชแแฃแแ แแแแ
Spring Boot แแแแแแแชแแแแแกแแแแก Docker แกแฃแ แแแแแแก แจแแฅแแแ แซแแแแแ แแแ แขแแแแ Docker แคแแแแจแ แ แแแแแแแแ แแแกแขแ แฃแฅแชแแแก แแแแแขแแแแ.
แฉแแแ แฏแแ แจแแแฅแแแแ แจแแกแ แฃแแแแแ JAR แคแแแแก แแ, แ แแแแ แช Docker แคแแแแแก แแแกแขแ แฃแฅแชแแแแแก แแแฌแแแ, แแแแแแแ แแแ แจแแกแ แฃแแแแแ JAR แคแแแแก แกแแแแแแกแ JRE แแแแแกแแฎแฃแแแแแก แแแแแ, แกแแญแแ แ แแแ แแแแขแ แแแแก แแแแแงแแแแแแก แจแแแแแ.
แแแแแ แจแแแฅแแแแ แฉแแแแ แแแแแคแฎแฃแแแก แแแแแแแชแแ web
, lombok
ะธ actuator
. แฉแแแ แแกแแแ แแแแแขแแแ แแแกแแแแแแแก แแแแขแ แแแแ แก API-แแก แฃแแ แฃแแแแแกแแงแแคแแ 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
, แ แแแแแก แแแแแ แแแแแแแ แแแ แฉแแแแก JAR แคแแแแก แแ แจแแแแแ แแฎแกแแแ แแแ แขแก, 8080
แ แแแแแแช แแแแกแแแแก แแฎแแแแแแก.
แแแแแแแชแแแก แแแแแ
แฏแแ แฃแแแ แจแแฅแแแแ แแแแแแแชแแ Maven-แแก แแ Gradle-แแก แแแแแงแแแแแแ. แแฅ แฉแแแ แแแงแแแแแ Maven:
mvn clean package
แแก แฅแแแแก แจแแกแ แฃแแแแแ JAR แคแแแแก แแแแแแแชแแแกแแแแก. แฉแแแ แฃแแแ แแแแแแแงแแแแแ แแก แจแแกแ แฃแแแแแแ JAR แแแแแ แแก แกแฃแ แแแแ, แ แแแ แแแฃแจแแแก Docker แซแ แแแแ.
แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ
แฉแแแ แจแแแแแ แแ แจแแกแ แฃแแแแแ JAR แคแแแแก แแแแแแกแแแ Docker แกแฃแ แแแจแ แแ แซแแแแแแก แแแจแแแแแ docker build
แแ แแแฅแขแแก root แแแ แแฅแขแแ แแแแแ, แ แแแแแแช แจแแแชแแแก แแแ แ แจแแฅแแแแ 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
แแฅ แแ แแก Dive แแ แซแแแแแแก แแแแแแแแแแ แแแฌแแแ:
แ แแแแ แช แแฎแแแแแ, แแแแแชแฎแแแแก แคแแแ แจแแแแแแแก แกแฃแ แแแแก แแแแแก แแแแจแแแแแแแแ แแแฌแแแก. แฉแแแ แแแแแแ แจแแแแแชแแ แแ แแ แคแแแแก แแแแ แจแแแแแ แแแแงแแคแแแแแแแจแ, แ แแแแ แช แฉแแแแ แแแขแแแแแแชแแแก แแแฌแแแ.
แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ Buildpack-แแก แแแแแงแแแแแแ
แฆแ แฃแแแแก แจแแฅแแแแก แแแแแขแแแแก แฃแแแ แแขแแกแแแ
Buildpack-แแก แแแแแงแแแแแแก แแ แ-แแ แแ แแแแแแ แ แฃแแแ แแขแแกแแแ แกแฃแ แแแแแแก แจแแกแแฅแแแแแแ แแ แแก แแก แแแแแกแแฎแฃแแแแแก แแแแคแแแฃแ แแชแแแก แชแแแแแแแแแแก แแแ แแแ แจแแกแแซแแแแแแแ แชแแแขแ แแแแแแแฃแแแ (แแจแแแแแแแ) แแ แแแแ แชแแแแแก แงแแแแ แแแแแแแชแแแจแ Builder-แแก แแแแแงแแแแแแ.
แแแแกแขแ แฃแฅแชแแแก แแแแแขแแแ แแญแแแ แแ แแงแ แแแแแแจแแ แแแฃแแ แแแแขแคแแ แแแกแแแ. Cloud-Native Buildpacks แฃแแ แฃแแแแแงแแคแก แกแขแแแแแ แขแแแแชแแแก แแแแขแคแแ แแแแแ OCI แแแแแกแแฎแฃแแแแแก แคแแ แแแขแแก แแฎแแ แแแญแแ แแ, แ แแช แฃแแ แฃแแแแแงแแคแก แกแฃแ แแแแก แแแจแแแแแก Docker แซแ แแแแ.
Spring Boot แแแแฃแแแก แแแแแงแแแแแแ
Spring Boot แแแแฃแแ แแจแแแแแก OCI แกแฃแ แแแแแก แฌแงแแ แแแแ Buildpack-แแก แแแแแงแแแแแแ. แกแฃแ แแแแแ แแฅแแแแแ แแแแแงแแแแแแ bootBuildImage
แแแแชแแแแแ (Gradle) แแ 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 แแแแแกแแฎแฃแแแแ แแ แซแแแแแแก แแแจแแแแแ:
docker images
แแแกแแแแ:
REPOSITORY SIZE
paketobuildpacks/run 84.3MB
gcr.io/paketo-buildpacks/builder 652MB
pratikdas/usersignup 257MB
แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ Jib-แแก แแแแแงแแแแแแ
Jib แแ แแก Google-แแก แแแแแกแแฎแฃแแแแแก แจแแฅแแแแก แแแแแแแขแ, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แฌแงแแ แแก แแแแแแแ แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแแก แแแขแแ แแแขแแฃแ แแแแแแก.
แจแแชแแแ jib-maven-plugin
pom.xml-แจแ:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
แจแแแแแแ, แฉแแแ แแแฌแแ แแแแแ Jib แแแแฃแแก 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 แแแแกแแแแแแแจแ แแจแแแแแแก แแแ แแ แแก.
- แฃแกแแคแ แแฎแแแแแก: แฃแคแ แ แแแ แกแฃแ แแแแแก แแกแแแ แแฅแแ แฃแคแ แ แแแแ แคแแ แแแแ แแแฌแงแแแแแแแแกแแแแก.
Docker แแแแแกแแฎแฃแแแแ แจแแแแแแ แคแแแแแแก แแแกแขแแกแแแ, แ แแแแแแแแแ แแแแแแฃแแ แฌแแ แแแแแแแแก แแแกแขแ แฃแฅแชแแแก แฉแแแแก Dockerfile-แจแ. แแแแแแฃแแ แคแแแ แฌแแ แแแแแแแแก แฅแแแแแแแแ แ แคแแแแก แชแแแแแแแแแแก แแแแขแแก. แ แแแแกแแช แฉแแแ แแแฆแแแ Docker แกแฃแ แแแก แ แแแกแขแ แแแแ, แแก แแฎแกแแแแ แคแแแแแแ แแ แแแแฎแแแ แฐแแกแขแแ.
แกแแแแแแคแฎแฃแแ แฉแแฅแแแก แแแแแงแแแแแ
แแแขแแแแแแชแแแก แคแแ แแฃแแ แแ แแแแขแแ แแแฃแแแ แแแแแแแชแแแก แแแแแแ แแแแแ Spring Framework-แแก แแแแแแแแแแฃแแแแแกแแแ แชแแแแ แแแแแแ.
แแแแแแแแแแฃแแแแแก แคแแแ, แ แแแแแแช แฅแแแแก แกแฅแแแ JAR แคแแแแแก แแแ แแแฌแแแก, แฉแแแแแขแแแ แแแแ แแฎแแแแ แแ แแฎแแ แแ แแแแฎแแแ แแแกแแแแซแแ แกแแกแขแแแแจแ.
แแแแแแแชแแแก แแฎแแแแ แแฎแแแ แคแแแ แแญแ แแแ แแแแแแแชแแแก แแแแแฎแแแแแกแ แแ แแแแขแแแแแ แแก แแแแแแแแแกแแก. แ แแแแ แช แแแฉแแแแแแแ แแ แแแแแ แแแแจแ:
แจแแแแแ แกแแฅแชแแแแจแ แแแแแแฎแแแแแ แ แแแแ แจแแแฅแแแแ แแก แแแขแแแแแแแฃแแ แกแฃแ แแแแแ Spring Boot แแแแแแแชแแแกแแแแก.
แกแแแแแแคแฎแฃแแ แฉแแขแแแ แแแแก แแแแแแแชแแแกแแแแก แแแขแแแแแแแฃแแ แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ Buildpack-แแก แแแแแงแแแแแแ
Spring Boot 2.3 แแฎแแ แก แฃแญแแ แก แคแแแแแก แกแฅแแแ JAR แคแแแแแก แแแฌแแแแแแก แชแแแแแฃแ แคแแแแแแ แแแแฆแแแแ. แจแ แแแแแก แคแฃแแฅแชแแ แแแแฃแแแกแฎแแแแแ แแแแแ แแฃแแแ แแ แแจแแแ แแ แฃแแแ แแงแแก แฉแแ แแฃแแ 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
แแฃ แฉแแแ แฉแแแ แแแแ Dive-แก, แ แแแ แแแแแแแฎแแ แจแ แแแแ แแแแแกแแฎแฃแแแแแจแ, แแแแแแแฎแแแ, แ แแ แแแแแชแฎแแแแก แคแแแ (แฌแแแแแ แแแแแกแแฎแฃแแ) แแแชแแแแแแ แแชแแ แแ แแแแแแแแขแแแแก แแแแแแแแแจแ, แแแแ แ แแแแแฆแแ แกแฅแแแ JAR แคแแ แแแขแแก แแแแแงแแแแแแ:
แกแแแแแแคแฎแฃแแ แฉแแขแแแ แแแแก แแแแแแแชแแแกแแแแก แแแขแแแแแแแฃแแ แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ Docker-แแก แแแแแงแแแแแแ
Maven แแ Gradle แแแแฃแแแก แแแแแงแแแแแแก แแแชแแแแ, แฉแแแ แแกแแแ แจแแแแแซแแแ แจแแแฅแแแแ Docker JAR แคแแแแแแ แกแฃแ แแแ Docker แคแแแแแ.
แ แแแแกแแช แแแงแแแแแ Docker-แก, แฉแแแ แแแญแแ แแแแ แแ แ แแแแแขแแแแแ แแแแแฏแแก แจแแกแ แฃแแแแ แคแแแแแแก แแแแกแแฆแแแแ แแ แกแแแแแแ แกแฃแ แแแจแ แแแแ แแแแแ แแแแกแแแแก.
แแแฆแแแฃแแ JAR-แแก แจแแแแแแกแ Maven-แแก แแแแแงแแแแแแ แแแแฅแขแแฃแ แแแฃแแ แคแแแแ แแจแแแแแแก แจแแแแแ แแกแ แแแแแแงแฃแ แแแ:
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-layertools
JAR แแแแแชแฎแแแแก แแแชแแแแ:
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
แแแแแแแแแแ แแฉแแแแแแก แแ แซแแแแแแแก list
, extract
ะธ 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 Loader แแแแกแแแ
snapshot-dependencies
แแแแแกแแแแ แ แแแแแแแแแแฃแแแแ, แ แแแแแก แแแ แกแแ แจแแแชแแแก SNAPSHOT-แก
application
แแแแแชแฎแแแแก แแแแกแแแ แแ แ แแกแฃแ แกแแแ
แคแแแแแ แแแแแกแแแฆแแ แแแ layers.idx
แคแแแแ แแ แแแแแแแแแแ แแแแ, แ แแแแแแแช แฃแแแ แแแแแแขแแก Docker แกแฃแ แแแก. แแก แคแแแแแ แแแแฎแแแ แฐแแกแขแจแ แแแ แแแแ แแแซแแแแแก แจแแแแแ, แ แแแแแ แแกแแแ แแ แแชแแแแแ. แแฎแแแแ แแแแแฎแแแแฃแแ แแแแแแแชแแแก แคแแแ แแขแแแ แแแแ แฐแแกแขแจแ, แ แแช แฃแคแ แ แกแฌแ แแคแแ แจแแแชแแ แแแฃแแ แแแแแก แแแแ .
แกแฃแ แแแแก แแแแแ แแแแแแแแแแฃแแแแแแแ, แ แแแแแแแช แแแแฆแแแฃแแแ แชแแแแแฃแ แคแแแแแแ
แฉแแแ แแแแจแแแแแ แกแแแแแแ แกแฃแ แแแก แแ แแขแแแแ แแแแแแแก แแแแแงแแแแแแ แ.แฌ
แแแแแ แจแแแชแแแแแ แฉแแแแ 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 แกแฃแ แแแ แแฅแแแแแ แกแฃแ แแแแก ID-แแ แแ แจแแแแแ แแแแแจแแฃแแแ.
แแ แแแแแก, แฉแแแ แแแฌแแ แแแแแ Dive แแ แซแแแแแแก, แ แแแแ แช แแแ แ, แ แแแ แจแแแแแฌแแแ แคแแแแแ แแแแแ แแ แแแฃแแ Docker แกแฃแ แแแแก แจแแแแแ. แฉแแแ แจแแแแแซแแแ แแแแแฌแแแแ แกแฃแ แแแแก ID แแ แขแแแ, แ แแแแ แช แจแแงแแแแ Dive แแ แซแแแแแแจแ:
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-แแก แแแแแงแแแแแแก แแแแขแแแแแ แแก แแแแแกแแฎแฃแแแแแก แแกแแแแแแ แฃแจแฃแแแแ แกแแฌแงแแกแ แแแแแแแ. แแก แแ แแก Docker-แแก แแแแแงแแแแแแก แแแขแแ แแแขแแแ แแแแขแแแแแ แแก แแแแแกแแฎแฃแแแแแก แจแแกแแฅแแแแแแ แฉแแแฃแแแแ แแแ แแแแ: แฏแแ แจแแฅแแแแแ แกแฅแแแ แจแแกแ แฃแแแแแแ JAR แคแแแแ แแ แจแแแแแ แจแแคแฃแแแ แแแ แแแแขแแแแแ แแก แกแฃแ แแแจแ Docker แคแแแแจแ แแแกแขแ แฃแฅแชแแแแแก แแแแแแแแแ.
แฉแแแ แแกแแแ แจแแแฎแแแแ แฉแแแแ แแแแขแแแแแ แแก แแแขแแแแแแชแแแก แคแแแแแแก แคแฃแแฅแชแแแก แฉแแ แแแแ, แ แแแแแแช แแแแฌแแแแแก แแแแแแแแแแฃแแแแแแก แชแแแแแฃแ แจแ แแแแจแ, แ แแแแแแแช แแแแฎแแแ แฐแแกแขแแ แแ แแแแแแแชแแแก แแฎแแแ แคแแแ แแขแแแ แแแแ แแแแแแแแแก แแ แแก แแแแขแแแแแ แแก แจแแกแ แฃแแแแแก แซแ แแแแแจแ.
แกแขแแขแแแจแ แแแแแงแแแแแฃแแ แงแแแแ แฌแงแแ แแก แแแแ แจแแแแซแแแแ แแแฎแแ แแฅ
แแ แซแแแแแแก แแแแแแแแ
แแฅ แแแชแแแฃแแแ แแ แซแแแแแแแแก แกแฌแ แแคแ แแแแแฎแแแแ, แ แแแแแแแช แแ แกแขแแขแแแจแ แแแงแแแแแแแ.
แแแแขแแฅแกแขแแก แแแกแฃแคแแแแแแ:
docker system prune -a
แแแแขแแแแแ แแก แกแฃแ แแแแก แจแแฅแแแ Docker แคแแแแแก แแแแแงแแแแแแ:
docker build -f <Docker file name> -t <tag> .
แฉแแแ แแแจแแแแแ แแแแขแแแแแ แแก แกแฃแ แแแก แกแแฌแงแแกแ แแแแแแแ (Dockerfile-แแก แแแ แแจแ):
mvn spring-boot:build-image
แแแแแแแแแแฃแแแแแก แคแแแแแแก แแแฎแแ. แแแแแแแชแแแก JAR แคแแแแแก แจแแฅแแแแแแ, แแแ แฌแแฃแแแแ, แ แแ แคแแแแแแก แคแฃแแฅแชแแ แฉแแ แแฃแแแ spring-boot-maven-plugin-แจแ:
java -Djarmode=layertools -jar application.jar list
แแแแแแแแแแฃแแแแแก แคแแแแแแก แแแแฆแแแ. แแแแแแแชแแแก JAR แคแแแแแก แจแแฅแแแแแแ แแแ แฌแแฃแแแแ, แ แแ แคแแแแแแก แคแฃแแฅแชแแ แฉแแ แแฃแแแ spring-boot-maven-plugin-แจแ:
java -Djarmode=layertools -jar application.jar extract
แแฎแแแแ แแแแขแแแแแ แแก แกแฃแ แแแแแแก แกแแ
docker images
แแฎแแแแ แแแแขแแแแแ แแก แกแฃแ แแแแก แแแ แชแฎแแแ (แแแ แฌแแฃแแแแ, แ แแ แฉแแงแแแแแแแก แแแกแขแ แฃแแแแขแ แแแแแกแขแแแแ แแแฃแแแ):
dive <image ID or image tag>
แฌแงแแ แ: www.habr.com