본문 바로가기

개발중/Kubernetes (k8s)

Dockerfile Build 에러 (jdk 버전 문제)

728x90
반응형

이슈

Local 에서는 maven clean > maven install 잘 되나 Docker 로 빌드시 Failure 발생

16.91 [INFO] Changes detected - recompiling the module!
16.92 [INFO] Compiling 99 source files to /root/sources/target/classes
16.92 [INFO] ------------------------------------------------------------------------
16.92 [INFO] BUILD FAILURE
16.92 [INFO] ------------------------------------------------------------------------
16.92 [INFO] Total time:  15.963 s
16.92 [INFO] Finished at: 2023-09-05T02:05:37Z
16.92 [INFO] ------------------------------------------------------------------------
16.93 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project lucy: Fatal error compiling: invalid target release: 17 -> [Help 1]
16.93 [ERROR]
16.93 [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
16.93 [ERROR] Re-run Maven using the -X switch to enable full debug logging.
16.93 [ERROR]
16.93 [ERROR] For more information about the errors and possible solutions, please read the following articles:
16.93 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
------
failed to solve: process "/bin/sh -c mvn package" did not complete successfully: exit code: 1

 

내 Dockerfile 은 아래와 같다.

FROM maven:3.6.3-jdk-8-slim AS build

COPY ./ /root/sources

# settings.xml 을 프로젝트 내에 준비 ( Nexus 정보 )
COPY ./settings.xml /root/.m2/settings.xml

WORKDIR /root/sources

RUN mvn package
 
# FROM openjdk:8-jdk-alpine

# RUN mkdir /www

# ----jar 명 변경 필수
# COPY --from=build /root/sources/target/lucy-0.0.1-SNAPSHOT.jar /www/Lucy3.jar

# ----2-3. JAR 파일 실행
# ----jar 경로 변경 필수
# CMD ["java", "-jar", "/www/Lucy3.jar"]

 

"RUN mvn package"  명령어 실행시 에러가 발생하는 것 같다.

 

해결책

 

오류 메시지를 보면 invalid target release: 17라는 에러가 발생하고 있는 것 같습니다. 이는 프로젝트가 Java 17로 컴파일되려고 시도하고 있으나 현재 Docker 이미지에서는 Java 8이 사용되고 있기 때문에 발생하는 문제입니다.

Docker 이미지의 FROM maven:3.6.3-jdk-8-slim AS build 부분에서 Maven 이미지를 Java 8로 기반으로 사용하고 있습니다. 그래서 프로젝트를 빌드하려고 할 때 Java 8에서는 Java 17으로 컴파일할 수 없다는 에러가 발생하게 됩니다.

해결책으로는 다음 중 하나를 선택할 수 있습니다:

Docker 이미지에 Java 17 사용: Maven 이미지 대신 Java 17을 기반으로 한 Docker 이미지를 사용하여 프로젝트를 빌드할 수 있습니다. FROM maven:3.6.3-jdk-17-slim AS build와 같이 변경하고, Java 17에서 프로젝트를 빌드합니다.

프로젝트를 Java 8로 다운그레이드: 프로젝트의 Java 버전을 17에서 8로 변경하여 컴파일할 수 있도록 수정합니다.

Java 버전 관리를 설정: Maven 빌드 시 Java 버전을 관리하기 위해 maven-compiler-plugin 플러그인 설정을 사용하여 Java 버전을 명시적으로 지정합니다. 이렇게 하면 Maven이 프로젝트를 빌드할 때 지정한 Java 버전을 사용하게 됩니다.
 

728x90
반응형