2024. 12. 13. 13:07ㆍ개발/Docker
🌞 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"]
'개발 > Docker' 카테고리의 다른 글
# [Docker] Docker Compose 를 활용해 2개 이상의 컨테이너 관리 하기 (0) | 2024.12.13 |
---|---|
# [Docker] Docker Compose 를 활용해 2개 이상의 컨테이너 관리 하기 (0) | 2024.12.13 |
# [Error] mvn clean 명령어 안될때. (2) | 2024.12.13 |
# [Docker] Docker compose Spring Boot 실행 하기 (0) | 2024.12.13 |
# [Docker] Docker Compose mySQL 실행하기 (1) | 2024.12.13 |