Docker이미지와 빌드

.dockerignore와 build context 관리

이미지 빌드가 느리고 예상보다 무거워질 때 자주 원인이 되는 build context와 .dockerignore의 역할을 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

text
node_modules
.git
dist
.env
coverage

설명

  • Docker build는 Dockerfile만 읽는 것이 아니라, 현재 디렉터리의 build context 전체를 daemon 또는 builder로 보냅니다. 그래서 무심코 큰 폴더를 포함하면 빌드가 느려지고 이미지 캐시도 자주 깨집니다.
  • .dockerignore는 build context에 넣지 않을 파일과 폴더를 지정하는 파일입니다. .gitignore와 비슷해 보여도 목적은 다릅니다. Git 추적 제외가 아니라 Docker build 입력 자체를 줄이는 역할입니다.
  • 특히 node_modules, 빌드 산출물, 테스트 커버리지, 비밀 파일, 대용량 asset을 그대로 context에 보내는 실수는 흔합니다. 이런 파일이 들어가면 build 속도와 보안, 캐시 효율 모두 손해를 봅니다.
  • 좋은 Dockerfile은 COPY 순서만이 아니라 context 자체를 작게 유지하는 데서 시작합니다. 실제로는 .dockerignore가 build 성능 최적화의 첫 단계인 경우가 많습니다.
  • 팀 프로젝트에서는 .dockerignore를 Dockerfile과 한 세트로 관리하는 감각이 중요합니다. 이미지가 느리거나 커질 때 항상 함께 점검해야 하는 파일입니다.

빠른 정리

항목역할
build contextbuild에 전달되는 파일 집합
.dockerignorecontext에서 제외할 파일 규칙
잘 빼야 하는 것node_modules, .git, .env, 빌드 산출물
효과build 속도, 보안, 캐시 효율 개선

주의할 점

.gitignore에 적어 두었다고 Docker build에서도 자동 제외되는 것은 아닙니다. Docker는 .dockerignore를 별도로 읽기 때문에, 민감 파일이나 대용량 폴더는 반드시 여기에서도 관리해야 합니다.

참고 링크

2 sources