빌드 콘텍스트가 무엇일까?
빌드 컨텍스트 (Build Context)
--
빌드 컨텍스트는
이미지를 빌드할 때 사용되는 폴더를 의미한다.
이미지 빌드 방식은
도커 데몬이 임시 컨테이너를 실행시키면서 레이어를 하나씩 추가하면서 커밋을 하게 된다.
그래서 도커 데몬이 해당 동작들을 수행하기 위해서는
빌드에 사용되는 파일들과 Dockerfile 파일을 전달해줘야 한다. (해당 파일들이 담긴 폴더 자체를 전달)
(그래야 도커 데몬이 Dockerfile에 작성된 내용(코드)들을 가지고 빌드를 진행할 수 있게 된다.)
이때 이렇게 도커 데몬에게 전달해 주는 폴더가 바로 빌드 콘텍스트이다.
즉, 이전에 build를 하던 과정을 보면 index.html 파일과 Dockerfile을 담고 있던 01.buildnginx 폴더가 바로 빌드 콘텍스트인 것이다.
Dockerfile에 작성한 COPY지시어를 사용하게 되면
빌드 콘텍스트에 있는 파일이 빌드에 사용되는 컨테이너로 복사된다.
( 도커 데몬은 빌드 컨텍스트에 존재하는 파일만 COPY로 복사가 가능하다.)
"docker build" 명령어를 작성할 때
Dockerfile 경로를 작성해 준 부분이 있었다.
사실 빌드 콘텍스트의 경로를 지정해 주는 것이다.
중요
Dockerfile은 별도의 폴더에서 관리하는 것이 좋다.
만약 Dockerfile이 최상단 폴더에 존재하게 된다면
빌드 시 Dockerfile을 포함하고 있는 최상단 폴더 전체가 빌드 콘텍스트로 되어버린다.
그래서 Dockerfile과 빌드에 사용될 파일만 별도의 폴더로 관리하는 것이 좋다.
--
.dockerignore 파일
--
Dockerfile이 존재하는 디렉터리에는. dockerignore 파일이 존재한다.
해당 파일에는 빌드 콘텍스트에 디렉터리 내용들을 전달할 때 제외할 파일들을 정의하는 곳이다.
(.gitignore와 동일하다고 생각하면 된다.)
--
참고 및 출처
'Docker' 카테고리의 다른 글
멀티 스테이지 빌드 (Multi-Stage build) 란? (+실습) (0) | 2024.06.22 |
---|---|
Dockerfile의 지시어 정리 (0) | 2024.06.21 |
이미지를 만드는(저장) 방법 [ image build ] (+명령어) (+IaC) (+Dockerfile 작성법) (0) | 2024.06.19 |
이미지를 만드는(저장) 방법 [ image commit ] (+명령어) (0) | 2024.06.18 |
이미지의 레이어 (Layer) (feat. 컨테이너의 레이어) (0) | 2024.06.17 |