루트폴더인 catalog-service로 이동하여 ./gradlew bootBuildImage 명령어 입력.
이 그래들 작업은 내부적으로 클라우드 네이티브 빌드팩을 이용해 애플리케이션을 컨테이너 이미지로 패키징 한다.
PS C:\Y\Cloud Native Spring in Action> cd C:\Y\"Cloud Native Spring in Action"\catalog-service
PS C:\Y\Cloud Native Spring in Action\catalog-service> ./gradlew bootBuildImage
Starting a Gradle Daemon (subsequent builds will be faster)
> Task :bootBuildImage
Building image 'docker.io/library/catalog-service:0.0.1-SNAPSHOT'
> Pulling builder image 'docker.io/paketobuildpacks/builder-jammy-java-tiny:latest' ..................................................
> Pulled builder image 'paketobuildpacks/builder-jammy-java-tiny@sha256:640a64ee00b8e629b8d1b4cc8a4d1a178951bec4704568b936e94929dccd2687'
> Pulling run image 'docker.io/paketobuildpacks/run-jammy-tiny:latest' for platform 'linux/amd64' ..................................................
> Pulled run image 'paketobuildpacks/run-jammy-tiny@sha256:0c5ac79d549c4b077a7d857631f817f8b573f5da2c109a51f320ee584d44d3f2'
> Executing lifecycle version v0.20.5
> Using build cache volume 'pack-cache-0835c272a0bf.build'
> Running creator
[creator] ===> ANALYZING
[creator] Image with name "docker.io/library/catalog-service:0.0.1-SNAPSHOT" not found
[creator] ===> DETECTING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator] 6 of 26 buildpacks participating
[creator] paketo-buildpacks/ca-certificates 3.9.0
[creator] paketo-buildpacks/bellsoft-liberica 11.0.1
[creator] paketo-buildpacks/syft 2.6.1
[creator] paketo-buildpacks/executable-jar 6.12.0
[creator] paketo-buildpacks/dist-zip 5.9.0
[creator] paketo-buildpacks/spring-boot 5.32.0
[creator] ===> RESTORING
[creator] ===> BUILDING
[creator] target distro name/version labels not found, reading /etc/os-release file
[creator]
[creator] Paketo Buildpack for CA Certificates 3.9.0
[creator] https://github.com/paketo-buildpacks/ca-certificates
[creator] Build Configuration:
[creator] $BP_EMBED_CERTS false Embed certificates into the image
[creator] $BP_ENABLE_RUNTIME_CERT_BINDING true Deprecated: Enable/disable certificate helper layer to add certs at runtime
[creator] $BP_RUNTIME_CERT_BINDING_DISABLED false Disable certificate helper layer to add certs at runtime
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
[creator]
[creator] Paketo Buildpack for BellSoft Liberica 11.0.1
[creator] https://github.com/paketo-buildpacks/bellsoft-liberica
[creator] Build Configuration:
[creator] $BP_JVM_JLINK_ARGS --no-man-pages --no-header-files --strip-debug --compress=1 configure custom link arguments (--output must be omitted)
[creator] $BP_JVM_JLINK_ENABLED false enables running jlink tool to generate custom JRE
[creator] $BP_JVM_TYPE JRE the JVM type - JDK or JRE
[creator] $BP_JVM_VERSION 21 the Java version
[creator] Launch Configuration:
[creator] $BPL_DEBUG_ENABLED false enables Java remote debugging support
[creator] $BPL_DEBUG_PORT 8000 configure the remote debugging port
[creator] $BPL_DEBUG_SUSPEND false configure whether to suspend execution until a debugger has attached
[creator] $BPL_HEAP_DUMP_PATH write heap dumps on error to this path
[creator] $BPL_JAVA_NMT_ENABLED true enables Java Native Memory Tracking (NMT)
[creator] $BPL_JAVA_NMT_LEVEL summary configure level of NMT, summary or detail
[creator] $BPL_JFR_ARGS configure custom Java Flight Recording (JFR) arguments
[creator] $BPL_JFR_ENABLED false enables Java Flight Recording (JFR)
[creator] $BPL_JMX_ENABLED false enables Java Management Extensions (JMX)
[creator] $BPL_JMX_PORT 5000 configure the JMX port
[creator] $BPL_JVM_HEAD_ROOM 0 the headroom in memory calculation
[creator] $BPL_JVM_LOADED_CLASS_COUNT 35% of classes the number of loaded classes in memory calculation
[creator] $BPL_JVM_THREAD_COUNT 250 the number of threads in memory calculation
[creator] $JAVA_TOOL_OPTIONS the JVM launch flags
[creator] Using Java version 17 extracted from MANIFEST.MF
[creator] BellSoft Liberica JRE 17.0.13: Contributing to layer
[creator] Downloading from https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jre17.0.13+12-linux-amd64.tar.gz
[creator] Verifying checksum
[creator] Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
[creator] Adding 146 container CA certificates to JVM truststore
[creator] Writing env.launch/BPI_APPLICATION_PATH.default
[creator] Writing env.launch/BPI_JVM_CACERTS.default
[creator] Writing env.launch/BPI_JVM_CLASS_COUNT.default
[creator] Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
[creator] Writing env.launch/JAVA_HOME.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator] Writing env.launch/MALLOC_ARENA_MAX.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/java-opts
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jvm-heap
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/link-local-dns
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/memory-calculator
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-configurer
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jmx
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/jfr
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/openssl-certificate-loader
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/security-providers-classpath-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/debug-9
[creator] Creating /layers/paketo-buildpacks_bellsoft-liberica/helper/exec.d/nmt
[creator] Java Security Properties: Contributing to layer
[creator] Writing env.launch/JAVA_SECURITY_PROPERTIES.default
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.append
[creator] Writing env.launch/JAVA_TOOL_OPTIONS.delim
[creator]
[creator] Paketo Buildpack for Syft 2.6.1
[creator] https://github.com/paketo-buildpacks/syft
[creator] Downloading from https://github.com/anchore/syft/releases/download/v1.18.1/syft_1.18.1_linux_amd64.tar.gz
[creator] Verifying checksum
[creator] Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
[creator]
[creator] Paketo Buildpack for Executable JAR 6.12.0
[creator] https://github.com/paketo-buildpacks/executable-jar
[creator] Class Path: Contributing to layer
[creator] Writing env/CLASSPATH.delim
[creator] Writing env/CLASSPATH.prepend
[creator] Process types:
[creator] executable-jar: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] task: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator] web: java org.springframework.boot.loader.launch.JarLauncher (direct)
[creator]
[creator] Paketo Buildpack for Spring Boot 5.32.0
[creator] https://github.com/paketo-buildpacks/spring-boot
[creator] Build Configuration:
[creator] $BPL_JVM_CDS_ENABLED false whether to enable CDS optimizations at runtime
[creator] $BPL_SPRING_AOT_ENABLED false whether to enable Spring AOT at runtime
[creator] $BP_JVM_CDS_ENABLED false whether to enable CDS & perform JVM training run
[creator] $BP_SPRING_AOT_ENABLED false whether to enable Spring AOT
[creator] $BP_SPRING_CLOUD_BINDINGS_DISABLED false whether to contribute Spring Boot cloud bindings support
[creator] $BP_SPRING_CLOUD_BINDINGS_VERSION 1 default version of Spring Cloud Bindings library to contribute
[creator] Launch Configuration:
[creator] $BPL_SPRING_CLOUD_BINDINGS_DISABLED false whether to auto-configure Spring Boot environment properties from bindings
[creator] $BPL_SPRING_CLOUD_BINDINGS_ENABLED true Deprecated - whether to auto-configure Spring Boot environment properties from bindings
[creator] Creating slices from layers index
[creator] dependencies (19.5 MB)
[creator] spring-boot-loader (458.8 KB)
[creator] snapshot-dependencies (0.0 B)
[creator] application (35.6 KB)
[creator] Spring Cloud Bindings 2.0.4: Contributing to layer
[creator] Downloading from https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-bindings/2.0.4/spring-cloud-bindings-2.0.4.jar
[creator] Verifying checksum
[creator] Copying to /layers/paketo-buildpacks_spring-boot/spring-cloud-bindings
[creator] Web Application Type: Contributing to layer
[creator] Servlet web application detected
[creator] Writing env.launch/BPL_JVM_THREAD_COUNT.default
[creator] Launch Helper: Contributing to layer
[creator] Creating /layers/paketo-buildpacks_spring-boot/helper/exec.d/spring-cloud-bindings
[creator] 4 application slices
[creator] Image labels:
[creator] org.opencontainers.image.title
[creator] org.opencontainers.image.version
[creator] org.springframework.boot.version
[creator] ===> EXPORTING
[creator] Adding layer 'paketo-buildpacks/ca-certificates:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:helper'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:java-security-properties'
[creator] Adding layer 'paketo-buildpacks/bellsoft-liberica:jre'
[creator] Adding layer 'paketo-buildpacks/executable-jar:classpath'
[creator] Adding layer 'paketo-buildpacks/spring-boot:helper'
[creator] Adding layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
[creator] Adding layer 'paketo-buildpacks/spring-boot:web-application-type'
[creator] Adding layer 'buildpacksio/lifecycle:launch.sbom'
[creator] Added 5/5 app layer(s)
[creator] Adding layer 'buildpacksio/lifecycle:launcher'
[creator] Adding layer 'buildpacksio/lifecycle:config'
[creator] Adding layer 'buildpacksio/lifecycle:process-types'
[creator] Adding label 'io.buildpacks.lifecycle.metadata'
[creator] Adding label 'io.buildpacks.build.metadata'
[creator] Adding label 'io.buildpacks.project.metadata'
[creator] Adding label 'org.opencontainers.image.title'
[creator] Adding label 'org.opencontainers.image.version'
[creator] Adding label 'org.springframework.boot.version'
[creator] Setting default process type 'web'
[creator] Saving docker.io/library/catalog-service:0.0.1-SNAPSHOT...
[creator] *** Images (5efc7b663c93):
[creator] docker.io/library/catalog-service:0.0.1-SNAPSHOT
[creator] Adding cache layer 'paketo-buildpacks/syft:syft'
[creator] Adding cache layer 'paketo-buildpacks/spring-boot:spring-cloud-bindings'
[creator] Adding cache layer 'buildpacksio/lifecycle:cache.sbom'
Successfully built image 'docker.io/library/catalog-service:0.0.1-SNAPSHOT'
BUILD SUCCESSFUL in 3m 6s
5 actionable tasks: 2 executed, 3 up-to-date
다시 한번 말하지만, 폴더명에 띄어쓰기 넣지마라....^^....
매번 따옴표 써주기 귀찮다.
이미지를 실행시켜서 컨테이너화된 애플리케이션이 제대로 작동하는지 확인.
docker run --rm --name catalog-service -p 8080:8080 catalog-service:0.0.1-SNAPSHOT
명령어 | 의미 |
docker run | 이미지에서 컨테이너를 실행 |
--rm | 실행이 끝난 후 컨테이너를 삭제 |
--name catalog-service | 컨테이너 이름 |
-p 8080:8080 | 포트번호 8080을 통해 컨테이너 외부로 서비스를 노출 |
catalog-service:0.0.1-SNAPSHOT | 실행할 이미지의 이름과 버전 |
제대로 실행됐다! (사실 중간에 명령어 잘못치는 바람에 계속안되서 잠시 화날 뻔했으나 빠른 해결)
확인 후 ctrl c 눌러 컨테이너 종료
'Cloud Native Spring in Action' 카테고리의 다른 글
임베디드 서버로 작업 (0) | 2025.01.08 |
---|---|
쿠버네티스로 컨테이너 관리 (0) | 2025.01.07 |
도커, 쿠버네티스 설치 (0) | 2025.01.06 |
컨트롤러 구현, 애플리케이션 테스트, 실행 (0) | 2025.01.05 |
프로젝트 초기화, git 연결 (1) | 2025.01.02 |