Build 서비스 속성
Build 서비스 속성 (Build service attribute - reference)
services 요소의 build 속성은 이미지 빌드 지시를 지정해요. 빌드 컨텍스트의 경로와 선택적 Dockerfile, 그리고 빌드 인자를 지정할 수 있어요. (짧은 문법과 긴 문법)
출처: 문서
본문
설명 (Description)
build 서비스 속성은 docker build가 사용할 빌드 옵션을 정의해요.
짧은 문법 (Short syntax)
짧은 문법은 빌드할 디렉토리 경로를 나타내는 문자열을 지정해요.
services:
webapp:
build: ./dir
이 값은 <ctx>:<dockerfile> 형태의 문자열로도 지정할 수 있는데, 컨텍스트 경로와 상대 Dockerfile 경로를 모두 지정해요. 별도의 Dockerfile 인자를 지정할 수는 없지만 additional_context와 target을 지정할 수 있어요.
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
긴 문법 (Long syntax)
긴 문법으로 여러 빌드 옵션을 지정할 수 있어요.
context(필수): Dockerfile이 있는 디렉토리 또는 git 저장소 URL.docker compose build를 실행할 때 Compose가 빌드 컨텍스트를 만들 수 있는 값이어야 해요.dockerfile(선택): 컨텍스트에 상대적인 대체 Dockerfile.dockerfile_inline(선택): Dockerfile 내용을 인라인으로 지정. 이 속성을 쓰면dockerfile은 무시돼요.args(선택): 빌드 시 사용할 인자(환경 변수 접근 포함)의 매핑.additional_contexts(선택): 빌드 시 접근 가능한 추가 빌드 컨텍스트.labels(선택): 이미지에 추가할 메타데이터 라벨.cache_from(선택): 빌드 캐시를 사용할 이미지 목록.docker build의--cache-from을 참고.cache_to(선택): 빌드 캐시를 내보낼 이미지/컨테이너.docker build --cache-to를 참고.no_cache(선택): 빌드 캐시를 무시하려면 true.pull(선택): 빌드 시 항상 더 새로운 이미지를 받아오려면 true.shm_size(선택): BuildKit이/dev/shm에 설정할 공유 메모리 크기.target(선택): 빌드할 멀티스테이지 Dockerfile의 대상 단계.tags(선택): 빌드 결과 이미지에 적용할 태그.ulimits(선택): 컨테이너의 ulimit 값을 재정의.platform(선택): 대상 플랫폼 (예:linux/amd64).
참고:
image속성이 지정돼 있으면docker compose build는build속성으로 빌드하고 결과 이미지에 지정된 이름을 태그해요.
args는 빌드 인자로, 값은 일반적으로 Compose 파일의 보간 없이 사용돼요. 환경 변수에서 값을 가져오려면 보간 문법을 사용해요.
예시 (Examples)
services:
frontend:
build:
context: ./frontend
dockerfile: Dockerfile.dev
args:
NODE_ENV: development
target: runner
cache_from:
- myapp:latest
더 알아보기 (Learn more)
- Docker Compose build 옵션과 BuildKit 개발 문서를 참고해요.