ai-coding-mines목차GitHub

런타임이 읽는 파일이 이미지에 안 들어간다

배포 · 인프라

증상

로컬·CI 유닛테스트는 전부 그린인데(레포에 파일이 실재하므로) 배포본에서만 404/400/파일 없음. 같은 유형으로 3회 재발했다.

원인 패턴

라우트가 상대경로(Path("data/x.json"))로 읽는데 그 파일이 이미지에 없다. 근원이 둘로 겹치기도 한다.

  1. Dockerfile이 해당 디렉터리를 COPY하지 않음
  2. .dockerignore가 그 디렉터리를 통째로 제외 — 빌드 컨텍스트에서부터 배제

해법

점검 습관

런타임이 읽는 경로를 추가·이동할 때마다 3자 대조: (1) Dockerfile COPY (2) .dockerignore 제외 (3) 라우트 상대경로 vs WORKDIR

검증 요령 (base 이미지를 못 받는 환경에서)

.dockerignore는 base 이미지와 무관하다. FROM scratch로 동일한 COPY만 빌드하면 컨텍스트 포함 여부가 그대로 검증된다 — 제외됐으면 "not found in build context"로 실패한다.

셸 없는 scratch 이미지의 내용을 직접 본다

FROM scratch는 셸이 없어 docker run … ls가 안 된다. 실행하지 않고 꺼낸다: docker create <img> /xdocker cp <cid>:/app/data ./outls -la ./outsha256을 레포 원본과 대조한다. 바이트가 같아야 "들어갔다"다.