본문으로 건너뛰기

.dockerignore로 가볍고 캐싱이 잘되는 Container 빌드하기

.dockerignore

빌드를 시작할 때, context에 .dockerignore가 있다면, 컨테이너 툴은 해당 파일을 읽어 무시할 파일을 정의합니다. podman.containerignore도 인식합니다.

context에 .dockerignore가 없더라도 실행되는 Dockerfile명과 같고 확장자가 .dockerignore인 파일이 Dockerfile과 같이 있다면 해당 파일을 읽어 무시할 파일을 정의합니다.

<project>/
├── deploy/
│ ├── build.Dockerfile
│ ├── build.Dockerfile.dockerignore
│ ├── test.Dockerfile
│ └── test.Dockerfile.dockerignore
└── ...

규칙


  • context를 루트 디렉토리로 간주합니다.
  • temp는 루트의 temp 파일 또는 디렉토리를 의미합니다.
  • #으로 시작하는 줄은 주석으로 처리됩니다.
  • *는 0개 이상의 문자를 의미합니다.
    • */temp는 한 단계 아래의 temp 파일 또는 디렉토리를 의미합니다.
    • temp*temp로 시작하는 파일 또는 디렉토리를 의미합니다.
  • ?는 1개의 문자를 의미합니다.
    • temp?temp 다음에 한 글자가 있는 파일 또는 디렉토리를 의미합니다.
  • **는 0개 이상의 디렉토리를 의미합니다.
    • **/temp는 루트 또는 모든 하위 디렉토리의 temp 파일 또는 디렉토리를 의미합니다.
  • ..은 상위 디렉토리로 이동을 의미합니다.
    • */../temptemp와 같습니다.
  • !는 ignore를 취소합니다.
    • 선언 순서에 영향을 받습니다.
      • !A*.md, AA.md 순서로 선언한 경우 루트 디렉토리에서 AA.md를 제외하고 A로 시작하는 모든 .md 파일을 컨테이너에 포함시킵니다.
      • AA.md, !A*.md 순서로 선언한 경우 루트 디렉토리에서 A로 시작하는 모든 .md 파일을 컨테이너에 포함시킵니다.
  • \\는 escape 문자로 사용됩니다.
    • \\** 문자를 의미합니다.
  • 연속된 /는 하나로 처리됩니다.