서비스 애플리케이션 이미지에 aws cli를 설치해야하는 요구사항이 발생
내가 만든 서비스는 Dockerfile을 이용해 이미지를 생성하지 않고,
gradle plugin인 bootBuildImage를 통해 이미지를 자동 build, push 하고 있었음.
aws cli를 추가하기 위해 Custom Image를 만들어야 함!
스프링 부트 프로젝트를 위한 CNB를 사용하여 OCI 이미지를 생성하는 Gradle task
bootBuildImage {
docker {
builderRegistry {
username = registryUserName
password = registryPassword
url = privateRegistryUrl
}
... 기존 코드
}
pullPolicy = "IF_NOT_PRESENT"
builder = "${privateRegistryUrl}/service-common-builder:builder"
runImage = "${privateRegistryUrl}/service-common-builder:runner"
... 기존 코드
}
builder와 runImage는 optional이며 default 값이 존재
optional이라 지정해주지 않으면 bootBuildImage 실행 시
docker hub에서 default builder, runner 이미지를 pulling 함.
custom image 를 사용할 것이기 때문에
builder image와 runner image는 로컬에서 최초 1번 private ECR build and push후 공통으로 사용한다.
builderRegistry
builder
paketobuildpacks/builder-jammy-base
runImage
앱이 실행되는 환경 이미지
해당 이미지를 base image로 해서 aws cli를 설치
paketobuildpacks/run-jammy-base
paketobuildpacks/builder-jammy-base 위의 builder의 builder.toml metadata에 작성된 run-image를 확인
Dockerfile
FROM paketobuildpacks/run-jammy-base
USER root
RUN apt-get update && apt-get install -y \
sudo \
curl \
unzip
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" \
&& unzip awscliv2.zip \
&& sudo ./aws/install
User cnb
위의 builder, runner image를 기반으로 생성된 서비스 애플리케이션 컨테이너에서 아래와 같이 확인
cnb@d324d5752e24:/workspace$ aws --version
aws-cli/2.17.24 Python/3.11.9 Linux/6.10.0-linuxkit exe/x86_64.ubuntu.22