[docker] Dockerfile의 파일을 복사하는 중, 그러한 파일이나 디렉토리가 없습니까?

루트 (~) 폴더에 Dockerfile이 설정되어 있습니다. 내 파일의 처음 세 줄은 다음과 같습니다.

COPY file1 /root/folder/
COPY file2 /root/folder/
COPY file3 /root/folder/

그러나 각 줄에 대해 다음 오류를 반환합니다.

그러한 파일 또는 디렉토리 없음

파일은 내 Dockerfile과 docker build - < Dockerfile동일한 디렉토리에 있으며 터미널의 동일한 디렉토리에서도 명령 을 실행하고 있습니다.

내가 여기서 정확히 뭘 잘못하고 있니?



답변

의 COPY 명령 Dockerfile에있는 파일을 복사 src받는 dest폴더. 당신 같은 외모 중 하나를 누락 file1, file2file3또는 구축을 위해 노력 Dockerfile잘못된 폴더에서.

Dockerfile 문서 참조

또한를 빌드하는 명령은 Dockerfile다음과 같아야합니다.

cd into/the/folder/
docker build -t sometagname .


답변

.dockerignore파일도 확인하십시오 .

이것은 매우 드문 경우라는 것을 알고 있지만 그 파일을 거기에 언급했습니다.


답변

이는 file1 / file2 / file3을 빌드 컨텍스트에없는 절대 경로로 참조하고 있기 때문일 수 있습니다. Docker는 빌드 컨텍스트에서만 경로를 검색합니다.

예를 들어 COPY / home / yourname / file1을 사용하는 경우 Docker 빌드는 $ {docker build working directory} / home / yourname / file1로 해석합니다. 여기에 동일한 이름의 파일이 없으면 파일 또는 디렉터리 오류가 발생하지 않습니다.

Docker 문제 중 하나를 참조하십시오.


답변

명령은 다음과 같습니다.

docker build -t imagename .

과:

docker build -t imagename - < Dockerfile2

같은 방식으로 실행되지 않습니다. Dockerfile 및 Dockerfile2를 사용하여 한 폴더 내에서 2 개의 docker 이미지를 빌드하려는 경우 stdin (<Dockerfile2)을 사용하는 두 번째 예제에서 COPY 명령을 사용할 수 없습니다. 대신 다음을 사용해야합니다.

docker build -t imagename -f Dockerfile2 .

그러면 COPY가 예상대로 작동합니다.


답변

달리는 docker build . -f docker/development/Dockerfile working, 애플리케이션의 루트가 아닌 지정된 디렉토리에서 도커 파일을 실행할 수 있습니다.

사용 -f또는 --file의 이름과 위치를 지정합니다 Dockerfile.

이것은 다른 디렉토리에서 도커 파일을 실행하려고 할 때 나에게 발생했습니다.

나는이 있었다 COPY failed: stat /var/lib/docker/tmp/docker-builder929708051/XXXX: no such file or directory과 고정 표시기 파일을 지정하여이 문제를 해결할 수 있었다.

그것은 docker build docker/development/Dockerfile나를 위해이 문제를 일으켰습니다.

처음 Dockerfile에는 앱 루트 디렉토리에 가 있었을 때 제대로 작동 했기 때문에 이상하다는 것을 알았습니다 . 환경 도커 파일을 좀 더 잘 관리하려는 경우 도움이됩니다.


답변

나는 방금이 문제를 경험했으며 여기에 제안 된 제안으로 문제가 해결되지 않았습니다. 알고 보니 내가 잘못 라인 엔딩했다 내 파일을 적절한 선 엔딩으로 변경했다. (이 경우 CRLF에서 LF로, 그래서 Ubuntu 14.04는 내가 Windows에서 편집했던 스크립트를 인식 할 것입니다.)

VSCode를 사용하여 줄 끝을 변경했으며 대부분의 코드 편집기에는 줄 끝을 선택할 수있는 옵션이 있습니다.

이것이 누군가를 돕기를 바랍니다.


답변

약간 어리석은 느낌이 들지만 내 문제는 내가 docker-compose를 실행하고 있고 Dockerfile이 ./deploy 하위 디렉토리에 있다는 것입니다. 내 ADD 참조는 Dockerfile이 아닌 프로젝트의 루트에 상대적이어야합니다.

변경 : ADD ./file.tar.gz / etc / folder / to : ADD ./deploy/file.tar.gz / etc / folder /

어쨌든 누군가 같은 문제가 발생하면 게시 할 것이라고 생각했습니다.