문제
Dockerfile을 이용하여 도커 이미지를 빌드하는 과정에서 “File does not exist” 라는 오류 메시지와 함께 빌드가 되지 않는 경우가 종종 존재함
파일은 존재하는데 이런 경우가 벌어질 경우엔 대부분 Dockerfile Context 의 최상위 디렉토리에서 COPY 키워드를 잘못 사용하고 있을 가능성이 높음
해결 방법
TL;DR
COPY 대신 ADD 키워드를 사용할 것
설명
•
Dockerfile 에서 사용할 수 있는 COPY 키워드는 하위 디렉토리의 구조를 완벽하게 지켜주지 않음
•
그 이유는 Dockerfile reference 에 적혀 있는데, COPY 키워드를 사용할 때 <src>가 디렉토리일 경우 해당 디렉토리 자체가 아닌 디렉토리 안의 내용 만을 복사한다고 적혀있음
이하는 Dockerfile reference 에 적혀있는 COPY 키워드에 대한 Note 내용을 발췌한 내용임
The directory itself isn't copied, only its contents.
•
Dockerfile 에서는 COPY 사용을 권장하지만 하위 디렉토리 구조가 반드시 맞춰져야 하는 경우라면 ADD 명령어를 사용할 경우 문제를 해결할 수 있음