카테고리 없음
도커 파일 빌드시 not found 문제
YoshiaLee
2024. 8. 20. 00:16
도커 빌드시에는 기본적으로 도커파일이 있는곳이 기준이고 그 상위폴더는 접근을 할수가 없다.
이게 일반 서버면 사실 상관이 없는데 msa 같은 서버일경우 문제가 생길수 있다.
msa 서버중 하나가 루트 폴더에 있는 어떤 패키지를 의존하게 된다면 그 패키지를 어떻게 도커 빌드에 포함 시킬수 있을까?
이처럼 도커파일이 있는 위치랑 내가 생각하는 위치(루트 폴더)가 다르게 되면 바로 에러(not found)를 직면하게 된다
# 첫 번째 단계: Gradle을 포함한 JDK 이미지를 사용하여 빌드합니다.
FROM gradle:7.6.1-jdk17 AS builder
# 작업 디렉토리 설정
WORKDIR /app
# 필요한 파일들을 복사합니다.
COPY ./kdmp-base-auth/build.gradle /app/build.gradle
COPY ./kdmp-base-auth/settings.gradle /app/settings.gradle
COPY ./kdmp-base-auth/gradle /app/gradle
# Gradle 종속성을 먼저 다운로드합니다.
RUN gradle build --no-daemon || return 0
# 모든 소스 코드를 복사합니다.
COPY ./kdmp-base-auth/ /app
# common 폴더를 복사합니다.
COPY ./kdmp-biz-common /app/kdmp-biz-common
# 애플리케이션을 빌드합니다.
RUN gradle build --no-daemon -x test
# 두 번째 단계: 빌드한 JAR 파일을 실행하기 위한 슬림 JDK 이미지를 사용합니다.
FROM amazoncorretto:17
# 작업 디렉토리를 설정합니다.
WORKDIR /app
# 빌더 단계에서 빌드한 JAR 파일을 복사합니다.
COPY --from=builder /app/build/libs/*.jar app.jar
# 환경 변수를 설정합니다. 프로파일은 필요에 따라 변경 가능합니다.
ENV PROFILE="dev"
# 애플리케이션 실행 명령을 설정합니다.
ENTRYPOINT ["java", "-jar", "app.jar", "--spring.profiles.active=${PROFILE}"]
Error 발생
#13 [builder 8/9] COPY ../kdmp-biz-common /app/kdmp-biz-common
#13 ERROR: failed to calculate checksum of ref 8e9ad73a-f5be-4013-b55f-09146566f1ef::hx5c4450qom4wiqagt13cvey1: "/kdmp-biz-common": not found
#14 [builder 7/9] COPY ../kdmp-base-auth/ /app
#14 ERROR: failed to calculate checksum of ref 8e9ad73a-f5be-4013-b55f-09146566f1ef::hx5c4450qom4wiqagt13cvey1: "/kdmp-base-auth": not found
#15 [builder 5/9] COPY ../kdmp-base-auth/gradle /app/gradle
#15 ERROR: failed to calculate checksum of ref 8e9ad73a-f5be-4013-b55f-09146566f1ef::hx5c4450qom4wiqagt13cvey1: "/kdmp-base-auth/gradle": not found
간단한 문제지만 막상 겪어보면 '왜 있는데 없다고 그래 바보야'를 연발하게 된다. (바보는 나였다.)
이문제는 도커파일의 위치랑 빌드하는 위치랑 분리하는 옵션을 통해서 쉽게 해결할수 있다.
-f 옵션을 통해서 도커파일의 위치를 명시해 주고 내가 빌드하고 싶은 위치는 뒤에다 따로 적어준다.
루트 폴더로 설정하면 모든 패키지가 visible 해져서 문제가 해결된다.
docker build -f <DockerFile 위치 + DockerFile 포함> -t <도커 이미지 이름> <내가 빌드하고 싶은 기준 위치, 즉 MSA 루트 폴더>