Dockerfile
정의해 놓고 docker build
명령어를 통해 컨테이너 이미지를 만드는 게 가장 많이 알려진 방법./gradlew jib
의존성 추가
build.gradle에 jib 라이브러리 추가
코드 예시
plugins {
id("org.springframework.boot") version "3.0.0"
id("io-spring-dependency-management") version "1.0.11.RELEASE"
id("java")
id("com.google.clude.tools.jib") version "3.1.2"
}
jib 설정
build.gradle에 jib 설정을 추가
from
adoptopenjdk:11-jre
로 설정to
container
코드 예시
jib {
from {
...
}
to {
...
}
container {
...
}
}
// hankkang 예시
jib {
from {
// 컨테이너 이미지는 가능한 가벼워야 하기 떄문에 alpine 사용
// 컨테이너 이미지를 만들 때 이미지 내부에서 빌드까지 할 게 아니라면 jdk 불필요
// 버전이 명시되어 향후 보안 취약점이나 버그 발생 시 영향 쉽게 확인 가능
image = "eclipse-temurin:17.0.6_10-jdk-alpine"
}
to {
credHelper = "erc-login"
image = "055375850930.dkr.ecr.ap-northeast-2.amazonaws.com/oh-my-diving:latest"
tags = "latest"
}
container {
jvmFlags = [
"-server",
"-Xms2g",
"-Xmx2g",
"-XX:+UseContainerSupport",
"-Dspring.profiles.actice=production",
"-XX:+useStringDeduplication",
"-Dfile.encoding=UTF8",
"-Dsun.net.inetaddr.ttl=0",
"-Dtag=latest"
]
environment = {
"stage": "production",
"port": "9142",
"serviceName": "oh-my-diving-api"
}
mainClass = "com.ohmydiving.api.OhMyDivingApiApplicationKt"
user = "nobody"
ports = [
"9142"
]
creationTime = "USE_CURRENT_TIMESTAMP"
}
}
docker login
명령으로 로그인 필요./gradlew jib
명령을 실행 → 성공한 경우 BUILD SUCCESSFUL 메세지 확인 가능docker pull 055375850930.dkr.ecr.ap-northeast-2.amazonaws.com/oh-my-diving:latest