• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

COPY --from=build /app/build/libs/*.jar /app/leafy.jar 명령어 질문

24.04.13 00:22 작성 조회수 97

1

안녕하세요.

백엔드 Dockerfile 내용 보고서 질문이 있습니다.

실제로 실습을 하다 보면

/build/libs에서

이렇게 jar 파일이 두개가 생기는데요.

COPY --from=build /app/build/libs/*.jar /app/leafy.jar



이 명령어는 .jar 확장자 파일 모두 leafy.jar이름으로 복사한다는 의미인거 같은데요.

이렇게 2개의 파일이 있거나 또는 2개 이상의 파일이 있을때..

1) 마지막 파일 기준으로 복사가 되는걸까요?

2) 아니면 두개의 파일이 합쳐져서 leafy.jar로 하나로 복사가 되는걸까요? 두개의 파일이 하나로 합쳐진다면 실행할때 잘 안될거 같은 느낌이 들어서요.

3) 추가적으로 -plain과 그냥 .jar파일 차이점도 궁금하고 왜 2개가 나오는지도 궁금합니다.

답변 1

답변을 작성해보세요.

0

노희석님 안녕하세요. 데브위키입니다.

파일이 중복되는 경우 일반적으로는 에러가 발생합니다.

하지만 일부 케이스에서 파일 이름이 알파벳 순서로 가장 먼저 오는 파일이 선택됩니다.

 

그래서 두 개의 파일을 *로 COPY를 시도할 경우,

Leafy-0.0.1-SNAPSHOT.jar
Leafy-0.0.1-SNAPSHOT-plain.jar

알파벳 순서상 Leafy-0.0.1-SNAPSHOT.jar 파일이 복사된 것을 확인할 수 있었습니다.

실제 복사된 파일의 크기를 보면, Leafy-0.0.1-SNAPSHOT.jar 파일이 복사된 것을 확인할 수 있습니다. 😀

-rw-r--r-- 1 root root 41806039 Apr 14 14:07 leafy.jar

 

하지만 이 방식은 버전/환경에 따라 에러가 발생할 가능성이 있기 때문에 권장드리지 않는 방식입니다.

Leafy-*-SNAPSHOT.jar 처럼 하나의 파일만 특정해서 지정할 수 있도록 사용하는 것이 더 좋을 것 같습니다!

 

-plain.jar 파일은 의존성 라이브러리가 포함되지 않고 실제 소스코드만 포함된 jar파일입니다. 이 -plain.jar 파일만으로는 애플리케이션이 실행되지 않기 때문에 모듈을 개발하는 것과 같은 특수한 상황에서 사용됩니다.

 

강의 들으시면서 더 궁금하신 부분이 있으면 편하게 질문주세요!