# [ERROR] [my-server 2/2] COPY build/libs/*SNAPSHOT.jar /app. , Error: Unable to access jarfile application.jar
🌞 2024.12.13 Fri
spring boot maven version 을 docker 에 올리던 중
[my-server 2/2] COPY build/libs/*SNAPSHOT.jar /app.
발생
[해결 참고] https://stackoverflow.com/questions/76304976/error-while-copying-maven-generated-jar-file-in-docker-file-build-stage
을 활용해서 Docker file 작성을 다시 했다.
[적용]
# 📝📝📝<Dockerfile> 📝📝📝
## maven use case
FROM maven:3.8.3-openjdk-17 as maven_builder
WORKDIR /app
COPY pom.xml .
COPY /src ./src
RUN mvn clean install
RUN mv target/*.jar target/application.jar # <-- add
RUN ls -l /app/target
FROM openjdk:17-jdk as builder
COPY --from=maven_builder /app/target/*.jar /target
RUN java -Djarmode=layertools -jar application.jar extract
FROM openjdk:17-jdk
COPY --from=builder dependencies/ ./
RUN true
COPY --from=builder snapshot-dependencies/ ./
RUN true
COPY --from=builder spring-boot-loader/ ./
RUN true
COPY --from=builder application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
하지만
[ERROR]
[my-server builder 3/3] RUN java -Djarmode=layertools -jar application.jar extract:
0.092 Error: Unable to access jarfile application.jar
failed to solve: process "/bin/sh -c java -Djarmode=layertools -jar application.jar extract" did not complete successfully: exit code: 1
라는 에러가 다시 나왔다.
java -Djarmode=layertools -jar /api-gateway-0.0.1-SNAPSHOT.jar list
를 치는 순간 권한이 없다고 나온다.
porm.xml 에 다음을 추가해준다.
[기존 플러그인]
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
[변경된 플러그인]
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>
</plugins>
그래도 해결이 안됨. 같은 에러 발생..
그냥 에러가 나오는
RUN java -Djarmode=layertools -jar application.jar extract
📌📌📌[해결]
코드 이하로 모두 주석처리하고 ENTRYPOINT 만 남겨두고 실행하니 docker가 잘 올라갔다.
[적용한 최종 Docker file ]
# 📝📝📝<Dockerfile> 📝📝📝
## maven use case
FROM maven:3.8.3-openjdk-17 as maven_builder
WORKDIR /app
COPY pom.xml .
COPY /src ./src
RUN mvn clean install
RUN mv target/*.jar target/application.jar # <-- add
RUN ls -l /app/target
FROM openjdk:17-jdk as builder
COPY --from=maven_builder /app/target/*.jar /target
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]