Cloud Native Buildpacks Tutorial - 7. Spring Boot 2.3のCloud Native BuildpacksサポートでOCIイメージを作成
Spring Boot 2.3でCloud Native Buildpacksがサポートされました。
pack CLIを使わなくてもMavenまたはGradleでCloud Native Buildpacksを使用してOCIイメージを作成できます。
ドキュメントは https://docs.spring.io/spring-boot/docs/2.3.0.M4/maven-plugin/reference/html/#build-image です。
目次
雛形プロジェクトの作成
curl https://start.spring.io/starter.tgz \
-d bootVersion=2.3.0.M4 \
-d artifactId=hello-cnb \
-d baseDir=hello-cnb \
-d dependencies=webflux,actuator \
-d packageName=hello \
-d applicationName=HelloCnbApplication | tar -xzvf -
cd hello-cnb
pom.xmlの次の箇所を変更し、作成するイメージ名を指定します。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- ↓↓ -->
<configuration>
<image>
<name>making/${project.artifactId}</name>
</image>
</configuration>
<!-- ↑↑ -->
</plugin>
イメージの作成
次のコマンドでビルドします。
./mvnw spring-boot:build-image -Dmaven.test.skip=true
次のようなログが出力されます。
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.example:hello-cnb >------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.3.0.M4:build-image (default-cli) > package @ hello-cnb >>>
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hello-cnb ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ hello-cnb ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ hello-cnb ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ hello-cnb ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ hello-cnb ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ hello-cnb ---
[INFO] Building jar: /private/tmp/pack/java/hello-cnb/target/hello-cnb-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.0.M4:repackage (repackage) @ hello-cnb ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] <<< spring-boot-maven-plugin:2.3.0.M4:build-image (default-cli) < package @ hello-cnb <<<
[INFO]
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.0.M4:build-image (default-cli) @ hello-cnb ---
[INFO] Building image 'docker.io/making/hello-cnb:latest'
[INFO]
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 0%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 4%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 8%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 20%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 38%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 54%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 69%
[INFO] > Pulling builder image 'docker.io/cloudfoundry/cnb:bionic-platform-api-0.2' 100%
[INFO] > Pulled builder image 'cloudfoundry/cnb@sha256:a601451579d595760d2678ea030ae938103c4b289e80f377b656a17e65855c59'
[INFO] > Pulling run image 'docker.io/cloudfoundry/run:base-cnb' 3%
[INFO] > Pulling run image 'docker.io/cloudfoundry/run:base-cnb' 100%
[INFO] > Pulled run image 'cloudfoundry/run@sha256:fd87df6a892262c952559a164b8e2ad1be7655021ad50d520085a19a082cd379'
[INFO] > Executing lifecycle version v0.6.1
[INFO] > Using build cache volume 'pack-cache-80516356d7fc.build'
[INFO]
[INFO] > Running detector
[INFO] [detector] 6 of 13 buildpacks participating
[INFO] [detector] org.cloudfoundry.openjdk v1.2.14
[INFO] [detector] org.cloudfoundry.jvmapplication v1.1.12
[INFO] [detector] org.cloudfoundry.tomcat v1.3.18
[INFO] [detector] org.cloudfoundry.springboot v1.2.13
[INFO] [detector] org.cloudfoundry.distzip v1.1.12
[INFO] [detector] org.cloudfoundry.springautoreconfiguration v1.1.11
[INFO]
[INFO] > Running analyzer
[INFO] [analyzer] Warning: Image "docker.io/making/hello-cnb:latest" not found
[INFO]
[INFO] > Running restorer
[INFO]
[INFO] > Running builder
[INFO] [builder]
[INFO] [builder] Cloud Foundry OpenJDK Buildpack v1.2.14
[INFO] [builder] OpenJDK JRE 8.0.242: Contributing to layer
[INFO] [builder] Downloading from https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u242-b08/OpenJDK8U-jre_x64_linux_hotspot_8u242b08.tar.gz
[INFO] [builder] Verifying checksum
[INFO] [builder] Expanding to /layers/org.cloudfoundry.openjdk/openjdk-jre
[INFO] [builder] Writing JAVA_HOME to shared
[INFO] [builder] Writing MALLOC_ARENA_MAX to shared
[INFO] [builder] Writing .profile.d/active-processor-count
[INFO] [builder] Java Security Properties v1.2.14: Contributing to layer
[INFO] [builder] Writing JAVA_OPTS to launch
[INFO] [builder] Security Provider Configurer v1.2.14: Contributing to layer
[INFO] [builder] Writing .profile.d/security-provider-classpath
[INFO] [builder] Writing .profile.d/security-provider-configurer
[INFO] [builder] Link-Local DNS v1.2.14: Contributing to layer
[INFO] [builder] Writing .profile.d/link-local-dns
[INFO] [builder] JVMKill Agent 1.16.0: Contributing to layer
[INFO] [builder] Downloading from https://java-buildpack.cloudfoundry.org/jvmkill/bionic/x86_64/jvmkill-1.16.0-RELEASE.so
[INFO] [builder] Verifying checksum
[INFO] [builder] Copying to /layers/org.cloudfoundry.openjdk/jvmkill
[INFO] [builder] Writing JAVA_OPTS to shared
[INFO] [builder] Class Counter v1.2.14: Contributing to layer
[INFO] [builder] Memory Calculator 4.0.0: Contributing to layer
[INFO] [builder] Downloading from https://java-buildpack.cloudfoundry.org/memory-calculator/bionic/x86_64/memory-calculator-4.0.0.tgz
[INFO] [builder] Verifying checksum
[INFO] [builder] Set $BPL_HEAD_ROOM to configure. Default 0
[INFO] [builder] Set $BPL_LOADED_CLASS_COUNT to configure. Default 35%!!(MISSING)o(MISSING)f classes
[INFO] [builder] Set $BPL_THREAD_COUNT to configure. Default 250
[INFO] [builder] Expanding to /layers/org.cloudfoundry.openjdk/memory-calculator
[INFO] [builder] Writing .profile.d/memory-calculator
[INFO] [builder]
[INFO] [builder] Cloud Foundry JVM Application Buildpack v1.1.12
[INFO] [builder] Executable JAR: Contributing to layer
[INFO] [builder] Writing CLASSPATH to shared
[INFO] [builder] Process types:
[INFO] [builder] executable-jar: java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher
[INFO] [builder] task: java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher
[INFO] [builder] web: java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher
[INFO] [builder]
[INFO] [builder] Cloud Foundry Spring Boot Buildpack v1.2.13
[INFO] [builder] Spring Boot 2.3.0.M4: Contributing to layer
[INFO] [builder] Writing CLASSPATH to shared
[INFO] [builder] 5 application slices
[INFO] [builder] Process types:
[INFO] [builder] spring-boot: java -cp $CLASSPATH $JAVA_OPTS hello.actuator.HelloCnbApplication
[INFO] [builder] task: java -cp $CLASSPATH $JAVA_OPTS hello.actuator.HelloCnbApplication
[INFO] [builder] web: java -cp $CLASSPATH $JAVA_OPTS hello.actuator.HelloCnbApplication
[INFO] [builder]
[INFO] [builder] Cloud Foundry Spring Auto-reconfiguration Buildpack v1.1.11
[INFO] [builder] Spring Auto-reconfiguration 2.11.0: Contributing to layer
[INFO] [builder] Downloading from https://repo.spring.io/release/org/cloudfoundry/java-buildpack-auto-reconfiguration/2.11.0.RELEASE/java-buildpack-auto-reconfiguration-2.11.0.RELEASE.jar
[INFO] [builder] Verifying checksum
[INFO] [builder] Copying to /layers/org.cloudfoundry.springautoreconfiguration/auto-reconfiguration
[INFO] [builder] Writing CLASSPATH to launch
[INFO]
[INFO] > Running exporter
[INFO] [exporter] Adding layer 'launcher'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:class-counter'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:java-security-properties'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:jvmkill'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:link-local-dns'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:memory-calculator'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:openjdk-jre'
[INFO] [exporter] Adding layer 'org.cloudfoundry.openjdk:security-provider-configurer'
[INFO] [exporter] Adding layer 'org.cloudfoundry.jvmapplication:executable-jar'
[INFO] [exporter] Adding layer 'org.cloudfoundry.springboot:spring-boot'
[INFO] [exporter] Adding layer 'org.cloudfoundry.springautoreconfiguration:auto-reconfiguration'
[INFO] [exporter] Adding 6/6 app layer(s)
[INFO] [exporter] Adding layer 'config'
[INFO] [exporter] *** Images (9564d335b161):
[INFO] [exporter] docker.io/making/hello-cnb:latest
[INFO] [exporter] Adding cache layer 'org.cloudfoundry.jvmapplication:executable-jar'
[INFO] [exporter] Adding cache layer 'org.cloudfoundry.springboot:spring-boot'
[INFO]
[INFO] Successfully built image 'docker.io/making/hello-cnb:latest'
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 45.214 s
[INFO] Finished at: 2020-04-28T23:07:10+09:00
[INFO] ------------------------------------------------------------------------
2.3.0.M4時点ではイメージとして、
- Builder ...
cloudfoundry/cnb:bionic-platform-api-0.2 - Stack ...
cloudfoundry/run:base-cnb
が使用されています。Pack 0.10.0で使われているイメージよりも古いです。
pack inspect-imageでイメージを解析します。
$ pack inspect-image making/hello-cnb
Inspecting image: making/hello-cnb
REMOTE:
(not present)
LOCAL:
Stack: io.buildpacks.stacks.bionic
Base Image:
Reference: 40845d52d6fb6d285a320aeac821b61cff0e2863e0ff12e12138c4775aae1828
Top Layer: sha256:f0d87426c0a82340475d73a9108b063d3d3cfbd92ef3b4af74dcd8f904475a36
Run Images:
cloudfoundry/run:base-cnb
Buildpacks:
ID VERSION
org.cloudfoundry.openjdk v1.2.14
org.cloudfoundry.jvmapplication v1.1.12
org.cloudfoundry.tomcat v1.3.18
org.cloudfoundry.springboot v1.2.13
org.cloudfoundry.distzip v1.1.12
org.cloudfoundry.springautoreconfiguration v1.1.11
Processes:
TYPE SHELL COMMAND ARGS
web (default) bash java -cp $CLASSPATH $JAVA_OPTS hello.actuator.HelloCnbApplication
executable-jar bash java -cp $CLASSPATH $JAVA_OPTS org.springframework.boot.loader.JarLauncher
spring-boot bash java -cp $CLASSPATH $JAVA_OPTS hello.actuator.HelloCnbApplication
task bash java -cp $CLASSPATH $JAVA_OPTS hello.actuator.HelloCnbApplication
イメージの実行
作成したイメージをdocker runで起動します。
docker run --rm -p 8080:8080 -e INFO_MESSAGE='Hello World!' making/hello-cnb
起動時に次のようなログが出力されます。
Container memory limit unset. Configuring JVM for 1G container.
Calculated JVM Memory Configuration: -XX:MaxDirectMemorySize=10M -XX:MaxMetaspaceSize=86636K -XX:ReservedCodeCacheSize=240M -Xss1M -Xmx449939K (Head Room: 0%, Loaded Class Count: 12882, Thread Count: 250, Total Memory: 1073741824)
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.0.M4)
2020-04-28 14:19:53.106 WARN 1 --- [ main] pertySourceApplicationContextInitializer : Skipping 'cloud' property source addition because not in a cloud
2020-04-28 14:19:53.112 WARN 1 --- [ main] nfigurationApplicationContextInitializer : Skipping reconfiguration because not in a cloud
2020-04-28 14:19:53.122 INFO 1 --- [ main] hello.HelloCnbApplication : Starting HelloCnbApplication on 9b02b1379b51 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2020-04-28 14:19:53.124 INFO 1 --- [ main] hello.HelloCnbApplication : No active profile set, falling back to default profiles: default
2020-04-28 14:19:54.757 INFO 1 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-04-28 14:19:55.450 INFO 1 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8080
2020-04-28 14:19:55.455 INFO 1 --- [ main] hello.HelloCnbApplication : Started HelloCnbApplication in 2.874 seconds (JVM running for 3.687)
JVMのメモリが自動で設定されていることに注目してください。
アプリケーションにアクセスします。
$ curl localhost:8080/actuator/health -w '\n'
{"status":"UP"}
$ curl localhost:8080/actuator/info -w '\n'
{"message":"Hello World!"}
Docker Imageのサイズを確認します。
$ docker images | grep making/hello-cnb
making/hello-cnb latest 40083389f3d9 40 years ago 225MB
Builderの変更
pom.xmlの次の箇所を変更し、使用するBuilderを指定します。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>making/${project.artifactId}</name>
<!-- ↓↓ -->
<builder>gcr.io/paketo-buildpacks/builder:base</builder>
<!-- ↑↑ -->
</image>
</configuration>
</plugin>
次のコマンドでビルドします。
./mvnw spring-boot:build-image -Dmaven.test.skip=true
次のようなログが出力されます。
[INFO] Scanning for projects...
[INFO]
[INFO] -----------------------< com.example:hello-cnb >------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.3.0.M4:build-image (default-cli) > package @ hello-cnb >>>
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hello-cnb ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ hello-cnb ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ hello-cnb ---
[INFO] Not copying test resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ hello-cnb ---
[INFO] Not compiling test sources
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ hello-cnb ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ hello-cnb ---
[INFO] Building jar: /private/tmp/pack/java/hello-cnb/target/hello-cnb-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.0.M4:repackage (repackage) @ hello-cnb ---
[INFO] Replacing main artifact with repackaged archive
[INFO]
[INFO] <<< spring-boot-maven-plugin:2.3.0.M4:build-image (default-cli) < package @ hello-cnb <<<
[INFO]
[INFO]
[INFO] --- spring-boot-maven-plugin:2.3.0.M4:build-image (default-cli) @ hello-cnb ---
[INFO] Building image 'docker.io/making/hello-cnb:latest'
[INFO]
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 0%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 7%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 14%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 25%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 43%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 61%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 73%
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base' 100%
[INFO] > Pulled builder image 'gcr.io/paketo-buildpacks/builder@sha256:b1f509937af906cd8a14d5563356dd997c09148a381cbfef9896cb06aa51959e'
[INFO] > Pulling run image 'gcr.io/paketo-buildpacks/run:base-cnb' 100%
[INFO] > Pulled run image 'cloudfoundry/run@sha256:fd87df6a892262c952559a164b8e2ad1be7655021ad50d520085a19a082cd379'
[INFO] > Executing lifecycle version v0.7.3
[INFO] > Using build cache volume 'pack-cache-80516356d7fc.build'
[INFO]
[INFO] > Running detector
[INFO] [detector] 5 of 11 buildpacks participating
[INFO] [detector] paketo-buildpacks/bellsoft-liberica 2.3.1
[INFO] [detector] paketo-buildpacks/executable-jar 1.2.1
[INFO] [detector] paketo-buildpacks/apache-tomcat 1.1.1
[INFO] [detector] paketo-buildpacks/spring-boot 1.5.1
[INFO] [detector] paketo-buildpacks/dist-zip 1.2.1
[INFO]
[INFO] > Running analyzer
[INFO]
[INFO] > Running restorer
[INFO]
[INFO] > Running builder
[INFO] [builder]
[INFO] [builder] Paketo BellSoft Liberica Buildpack 2.3.1
[INFO] [builder] Set $BP_JAVA_VERSION to configure the Java version. Default 11.*.
[INFO] [builder] Set $BPL_HEAD_ROOM to configure the headroom in memory calculation. Default 0.
[INFO] [builder] Set $BPL_LOADED_CLASS_COUNT to configure the number of loaded classes in memory calculation. Default 35% of classes.
[INFO] [builder] Set $BPL_THREAD_COUNT to configure the number of threads in memory calculation. Default 250.
[INFO] [builder] BellSoft Liberica JRE 8.0.252: Contributing to layer
[INFO] [builder] Downloading from https://github.com/bell-sw/Liberica/releases/download/8u252+9/bellsoft-jre8u252+9-linux-amd64.tar.gz
[INFO] [builder] Verifying checksum
[INFO] [builder] Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
[INFO] [builder] Writing env/JAVA_HOME.override
[INFO] [builder] Writing env/MALLOC_ARENA_MAX.override
[INFO] [builder] Writing profile.d/active-processor-count.sh
[INFO] [builder] JVMKill Agent 1.16.0: Contributing to layer
[INFO] [builder] Downloading from https://github.com/cloudfoundry/jvmkill/releases/download/v1.16.0.RELEASE/jvmkill-1.16.0-RELEASE.so
[INFO] [builder] Verifying checksum
[INFO] [builder] Copying to /layers/paketo-buildpacks_bellsoft-liberica/jvmkill
[INFO] [builder] Writing env/JAVA_OPTS.append
[INFO] [builder] Link-Local DNS: Contributing to layer
[INFO] [builder] Copying to /layers/paketo-buildpacks_bellsoft-liberica/link-local-dns
[INFO] [builder] Writing profile.d/link-local-dns.sh
[INFO] [builder] Memory Calculator 4.0.0: Contributing to layer
[INFO] [builder] Downloading from https://github.com/cloudfoundry/java-buildpack-memory-calculator/releases/download/v4.0.0/memory-calculator-4.0.0.tgz
[INFO] [builder] Verifying checksum
[INFO] [builder] Expanding to /layers/paketo-buildpacks_bellsoft-liberica/memory-calculator
[INFO] [builder] Writing profile.d/memory-calculator.sh
[INFO] [builder] Class Counter: Contributing to layer
[INFO] [builder] Copying to /layers/paketo-buildpacks_bellsoft-liberica/class-counter
[INFO] [builder] Java Security Properties: Contributing to layer
[INFO] [builder] Writing env.launch/JAVA_OPTS.append
[INFO] [builder] Writing env.launch/JAVA_SECURITY_PROPERTIES.override
[INFO] [builder] Security Providers Configurer: Contributing to layer
[INFO] [builder] Copying to /layers/paketo-buildpacks_bellsoft-liberica/security-providers-configurer
[INFO] [builder] Writing profile.d/security-providers-classpath.sh
[INFO] [builder] Writing profile.d/security-providers-configurer.sh
[INFO] [builder]
[INFO] [builder] Paketo Executable JAR Buildpack 1.2.1
[INFO] [builder] Writing env/CLASSPATH
[INFO] [builder] Process types:
[INFO] [builder] executable-jar: java -cp "${CLASSPATH}" ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher
[INFO] [builder] task: java -cp "${CLASSPATH}" ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher
[INFO] [builder] web: java -cp "${CLASSPATH}" ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher
[INFO] [builder]
[INFO] [builder] Paketo Spring Boot Buildpack 1.5.1
[INFO] [builder] Image labels:
[INFO] [builder] org.opencontainers.image.title
[INFO] [builder] org.opencontainers.image.version
[INFO] [builder] org.springframework.boot.spring-configuration-metadata.json
[INFO] [builder] org.springframework.boot.version
[INFO]
[INFO] > Running exporter
[INFO] [exporter] Adding layer 'launcher'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:class-counter'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:jre'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:jvmkill'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:link-local-dns'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:memory-calculator'
[INFO] [exporter] Adding layer 'paketo-buildpacks/bellsoft-liberica:security-providers-configurer'
[INFO] [exporter] Adding layer 'paketo-buildpacks/executable-jar:class-path'
[INFO] [exporter] Adding 1/1 app layer(s)
[INFO] [exporter] Adding layer 'config'
[INFO] [exporter] *** Images (741c050dad1f):
[INFO] [exporter] docker.io/making/hello-cnb:latest
[INFO] [exporter] Adding cache layer 'paketo-buildpacks/executable-jar:class-path'
[INFO]
[INFO] Successfully built image 'docker.io/making/hello-cnb:latest'
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35.993 s
[INFO] Finished at: 2020-04-28T23:29:25+09:00
[INFO] ------------------------------------------------------------------------
指定したPaketoのBuilderが使用されていることがわかります。
pack inspect-imageでイメージを解析します。
$ pack inspect-image making/hello-cnb
Inspecting image: making/hello-cnb
REMOTE:
(not present)
LOCAL:
Stack: io.buildpacks.stacks.bionic
Base Image:
Reference: 40845d52d6fb6d285a320aeac821b61cff0e2863e0ff12e12138c4775aae1828
Top Layer: sha256:f0d87426c0a82340475d73a9108b063d3d3cfbd92ef3b4af74dcd8f904475a36
Run Images:
gcr.io/paketo-buildpacks/run:base-cnb
Buildpacks:
ID VERSION
paketo-buildpacks/bellsoft-liberica 2.3.1
paketo-buildpacks/executable-jar 1.2.1
paketo-buildpacks/apache-tomcat 1.1.1
paketo-buildpacks/spring-boot 1.5.1
paketo-buildpacks/dist-zip 1.2.1
Processes:
TYPE SHELL COMMAND ARGS
web (default) bash java -cp "${CLASSPATH}" ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher
executable-jar bash java -cp "${CLASSPATH}" ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher
task bash java -cp "${CLASSPATH}" ${JAVA_OPTS} org.springframework.boot.loader.JarLauncher