docker buildx dap build

docker buildx dap build

docker buildx dap build는 Debug Adapter Protocol(DAP)에 맞춰 빌드를 시작하는 명령이에요. IDE 디버거에서 빌드를 단계별로 제어하고 싶을 때 사용해요.

출처: 문서

본문

docker buildx dap build는 DAP 빌드를 시작하는 하위 명령이에요. 디버그 어댑터가 IDE의 launch 구성에서 받은 인자를 그대로 빌드 명령에 전달해요.

지원하는 옵션은 다음과 같아요.

옵션 기본값 설명
--add-host 커스텀 host-to-IP 매핑을 추가해요 (host:ip)
--allow 추가 권한(entitlement)을 명시적으로 허용해요 (예: network.host, security.insecure)
--annotation 컨테이너에 주석(annotation)을 추가해요 (OCI 런타임으로 전달돼요)
--attest 증명(attestation) 파라미터 (형식: type=sbom,generator=image)
--build-arg 빌드 시 변수를 설정해요
--build-context 추가 빌드 컨텍스트 (예: name=path, name=docker-image://image)
--cache-from 외부 캐시 소스 (예: user/app:cache, type=local,dest=path)
--cache-to 캐시 내보내기 대상 (예: user/app:cache, type=local,dest=path)
--call build 빌드를 평가하는 메서드를 설정해요 (check, outline, targets)
--cgroup-parent 컨테이너의 상위 cgroup을 정해요
--check --call=check의 축약형이에요
-f, --file 빌드 정의 파일
--iidfile 이미지 ID를 파일에 기록해요
--label 컨테이너에 메타데이터를 설정해요
--load --output=type=docker의 축약형이에요
--metadata-file 빌드 결과 메타데이터를 파일에 기록해요
--network 컨테이너를 네트워크에 연결해요
--no-cache 이미지를 빌드할 때 캐시를 사용하지 않아요
--no-cache-filter 지정한 단계만 캐시하지 않아요
-o, --output 파일로 저장해요 (기본은 stdout)
--platform 서버가 멀티플랫폼을 지원하면 플랫폼을 설정해요
--policy 정책 구성 (형식: filename=path[,filename=path]...)
--progress auto 진행 출력 유형을 설정해요 (auto, none, plain, quiet, rawjson, tty)
--provenance --attest=type=provenance의 축약형이에요
--pull 생성 전에 이미지를 가져올지 정해요 (always, missing, never)
--push --output=type=registry,unpack=false의 축약형이에요
-q, --quiet 구성만 검증하고 아무것도 출력하지 않아요
--resource 빌드 컨테이너 리소스 제한 (형식: memory=2g, cpus=4)
--sbom --attest=type=sbom의 축약형이에요
--secret 빌드에 노출할 비밀값 (형식: id=mysecret[,src=/local/file])
--shm-size /dev/shm 크기를 정해요
--ssh 빌드에 노출할 SSH 에이전트 소켓·키 (형식: default 또는 id=path)
-t, --tag 새 이미지 참조를 설정해요 (형식: [registry/]repository[:tag])
--target 빌드할 target build stage를 설정해요
--ulimit ulimit 옵션을 정해요

Launch request arguments

다음 launch request arguments를 지원해요. launch 요청의 JSON 본문으로 전달돼요.

이름 타입 기본값 설명
dockerfile string Dockerfile Dockerfile 이름
contextPath string . 빌드 컨텍스트 경로 (보통 첫 번째 위치 인자)
target string 빌드할 target build stage
stopOnEntry boolean false 첫 번째 지시문에서 멈추기

Additional Arguments

명령줄 인자는 일반 빌드 명령에 전달하는 것처럼 디버그 어댑터에 전달될 수 있고 그 값이 설정돼요. launch 요청 인자가 있으면 명령줄 인자보다 우선해요.

디버그 확장은 launch 구성에 argsbuilder 항목을 넣어야 해요. 이것들은 도구 호출에 전달되는 인자를 수정해요. builder는 실행 파일 바로 뒤에 --builder <arg>를 추가하고, args는 도구 호출 끝에 붙어요. 예를 들어 Visual Studio Code의 launch 구성이 다음과 같다면:

{
    "args": ["--build-arg", "FOO=AAA"]
    "builder": ["mybuilder"]
}

디버그 어댑터는 docker buildx --builder mybuilder dap build --build-arg FOO=AAA로 호출돼요.

더 알아보기