1. 컨텍스트
빌드 컨텍스트는 이미지를 빌드할 때 사용되는 폴더이다. 이미지 빌드 방식은 도커 데몬이 임시 컨테이너를 실행시키면서 레이어드를 한 개씩 추가한다. 그래서 도커 데몬에게 도커 파일과 빌드에 사용되는 파일을 전달해야 한다. 도커 데몬에게 전달해 주는 폴더가 바로 빌드 컨텍스트이다.
이전 빌드 실습에서 인덱스와 도커 파일을 작성했었던 buildnginx 폴더가 바로 빌드 컨텍스트이다. docker build 명령을 사용하면 빌드 컨텍스트가 도커 데몬에게 모두 전달된다. 그래서 해당 컨텍스트 안에 있는 도커 파일로 도커 데몬이 이미지를 빌드하는 것이다. 그리고 도커 파일에서 카피 지시어를 사용하면 빌드 컨텍스트에 있는 파일이 빌드에 사용되는 컨테이너로 복사되는 것이다. 그리고 도커 데몬은 빌드 컨텍스트에 존재하는 파일만 카피 명령으로 복사할 수 있다.
.dockerignore 라는 파일로 빌드 컨텍스트에 전달하지 않을 파일을 지정할 수 있다. 예를 들어 빌드 컨텍스트 파일인 buildnginx 파일 안에 용량이 매우 큰 largeJunk(3GB) 파일을 도커 데몬에게 전달하지 않으려면 .dockerignore 파일 안에 largeJunk 파일명을 작성하면 해당 파일을 제외하고 도커 데몬에게 전달 빌드 컨텍스트 파일이 전달된다. 도커 파일과 빌드에 사용되는 파일만 별도의 파일로 관리해야 한다.
FROM nginx:1.23
COPY largeJunk.txt /usr/share/nginx/html/index.html
CMD [ "nginx", "-g", "deamon off;" ]
02.buildcontext 파일 안에 Dockerfile을 생성하고 위와 같이 작성한다. 이전에 학습한 01.buildnginx 폴더 안에 Dockerfile 의 COPY 지시어를 largeJunk.txt로 변경하면 된다. largeJunk.txt 파일을 매우 큰 파일이라고 가정하고 실습을 진행하는 것이다.
docker build -t buildcontext:ignorejunk . # 빌드컨텍스트 테스트 이미지 빌드
위에서 발생한 에러는 정상적이다. 빌드 컨텍스트에 존재하지 않기 때문에 COPY 지시어에서 에러가 발생하는 것이다. 왜냐하면 dockerignore 안에 largeJun.txt 파일이 작성되어 있기 때문이다. 이제 dockerignore 파일 안에 내용을 지우고 다시 빌드를 수행해보자.
docker build -t buildcontext:ignorejunk . # 빌드컨텍스트 테스트 이미지 빌드
더이상 에러가 발생하지 않고 정상적으로 테스트 이미지 빌드가 수행되는 것을 확인할 수 있다. 불필요한 파일 혹은 크기가 큰 파일은 도커 데몬에게 전달하지 않도록 .dockerignore 안에 작성하여 필요한 파일들만 전달할 수 있도록 관리하자.
'도커 > 개발자를 위한 쉬운 도커' 카테고리의 다른 글
4.6 도커(Docker) 이미지 빌드: 멀티 스테이지 빌드(Multi-Stage-Build) (0) | 2024.06.29 |
---|---|
4.5 도커(Docker) 이미지 빌드: 도커파일(Dockerfile) 지시어 (0) | 2024.06.29 |
4.3 도커(Docker) 이미지 빌드: 이미지 빌드(Build) (0) | 2024.06.29 |
4.1 도커(Docker) 이미지 빌드: 이미지와 레이어(Layer) (0) | 2024.06.29 |
4.2 도커(Docker) 이미지 빌드: 이미지 커밋(Commit) (0) | 2024.06.29 |