Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

Docker build COPY source not found? Dockerfile 수정 전에 실제 context를 감사하세요

COPY는 checkout, 생성, ignore 뒤의 build context만 읽습니다. command와 snapshot을 보존하고 한 경계만 수정하세요.

Original ko diagram of Docker context selection and COPY visibility.
원본 일러스트: COPY는 filtering 뒤 선택된 context만 읽습니다. Watch at Ease

Docker COPY failure는 host에 파일이 없다는 뜻이 아닙니다. BuildKit이 받은 filtered context에 없거나 다른 stage, image, named context를 읽는 것입니다.

command와 error를 보존하고 context type, checkout, ignore, source kind를 입증하세요. context를 넓히거나 secret을 포함하지 말고 한 경계만 고칩니다.

command와 context 보존

error, cwd, version, builder, Dockerfile과 마지막 context argument를 기록하세요.

local, Git, tar, named, empty context를 분류합니다.

checkout과 생성 source 증명

exact case, sparse checkout, submodule, LFS, checkout path를 실제 snapshot에서 확인합니다.

생성 file 위치를 기록하고 default Git context가 runner mutation을 읽지 않음을 확인합니다.

유효 ignore 계산

root와 Dockerfile-specific ignore를 읽고 precedence와 last match를 확인합니다.

broad ignore를 없애거나 secret을 COPY하지 말고 최소 exception만 둡니다.

default와 --from 분리

plain COPY는 default context, --from은 stage/image/named context root를 읽습니다.

`../`로 탈출하지 말고 필요하면 좁은 named context를 선언합니다.

한 번 수정하고 검증

context, checkout, generation, case, ignore, Git/path, --from 중 하나만 고칩니다.

fresh build record와 최종 artifact를 확인하고 CI에서 같은 계약을 재현합니다.

Original ko diagram of absent, ignored and --from source branches.
원본 일러스트: missing source를 분류한 뒤 한 경계만 고칩니다. Watch at Ease