이슈
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 버전을 사용하게 됩니다.
'개발중 > Kubernetes (k8s)' 카테고리의 다른 글
Spring Boot vs Fluentd vs ElasticSearch ✨ (0) | 2023.12.13 |
---|---|
Docker / k8s 환경에서 cookie (JSESSIONID) 가 발급되지 않았을 때 해결 방법 ( server.xml Alias 추가로 해결 ) (1) | 2023.11.28 |
쿠버네티스의 여정 (0) | 2022.05.04 |