Docker Buildx Build –target 사용법 완벽 가이드! 특정 Build Stage 실행하기

Dockerfile이 점점 복잡해지면 하나의 이미지 빌드 과정 안에서도 여러 단계(Stage)를 나누어 관리하게 됩니다.

예를 들어:

  • 개발 환경 이미지
  • 테스트 환경 이미지
  • 최종 운영 이미지
  • 빌드 전용 환경

등을 하나의 Dockerfile 안에서 관리할 수 있습니다.

이때 사용하는 것이 Docker Multi-stage Build입니다.

Docker Buildx Build에서는 특정 Stage만 선택하여 빌드할 수 있는 기능을 제공합니다.

바로 --target 옵션입니다.

예:

docker buildx build \
--target builder \
-t test-image:v1 .

Dockerfile 안에 정의된 특정 Stage까지만 실행할 수 있습니다.

이번 글에서는 Docker Buildx Build –target의 개념부터 Multi-stage Build 구조, 특정 Stage 실행 방법, 개발·테스트 활용 사례까지 자세히 알아보겠습니다.

Docker Buildx Build –target이란 무엇인가?

--target은 Dockerfile의 특정 Build Stage를 지정하는 옵션입니다.

기본 형식:

docker buildx build \
--target Stage이름 .

Dockerfile:

FROM node AS builder

RUN npm install


FROM nginx AS production

COPY --from=builder .

빌드:

docker buildx build \
--target builder .

builder Stage까지만 실행합니다.

Docker Multi-stage Build란?

Multi-stage Build는 하나의 Dockerfile에서 여러 개의 빌드 단계를 정의하는 방식입니다.

예:

FROM golang AS builder

RUN go build


FROM alpine

COPY --from=builder /app .

구조:

Stage 1

Builder 환경

↓

Stage 2

최종 이미지

불필요한 파일을 제거하여 이미지 크기를 줄일 수 있습니다.

Docker Buildx Build –target은 언제 사용하는가?

다음 상황에서 사용합니다.

  • 개발용 Stage 테스트
  • 빌드 과정 확인
  • Debug 환경 생성
  • 특정 단계 결과 확인
  • CI/CD 단계 분리

특히 복잡한 Dockerfile 관리에서 유용합니다.

Docker Buildx Build –target 기본 사용법

Dockerfile:

FROM ubuntu AS base

RUN apt update


FROM base AS test

RUN echo "test"


FROM base AS production

RUN echo "production"

Stage 확인:

base

test

production

특정 Stage 빌드:

docker buildx build \
--target test \
-t app:test .

test Stage 결과가 생성됩니다.

Docker Buildx Build –target과 일반 Build 차이

일반 Build:

docker buildx build \
-t app:v1 .

기본적으로 마지막 Stage까지 실행합니다.

Target 사용:

docker buildx build \
--target test \
-t app:test .

원하는 Stage까지만 실행합니다.

Dockerfile Stage 이름 확인 방법

Dockerfile:

FROM python AS builder

FROM builder AS testing

FROM testing AS production

Stage 이름:

builder

testing

production

AS 뒤의 이름을 --target 값으로 사용합니다.

Docker Buildx Build –target 실무 활용 예제

테스트 환경 빌드

Dockerfile:

FROM node AS development

COPY . .

RUN npm install


FROM development AS test

RUN npm test


FROM nginx AS production

COPY --from=development /app .

테스트만 실행:

docker buildx build \
--target test \
-t app:test .

운영 이미지를 만들지 않고 테스트할 수 있습니다.

개발 환경과 운영 환경 분리

개발:

docker buildx build \
--target development \
-t app:dev .

운영:

docker buildx build \
--target production \
-t app:prod .

하나의 Dockerfile로 여러 환경을 관리할 수 있습니다.

CI/CD에서 Docker Buildx Build –target 활용

CI 단계:

테스트:

docker buildx build \
--target test \
-t app:test .

배포:

docker buildx build \
--target production \
-t app:prod \
--push .

빌드 목적에 따라 Stage를 분리할 수 있습니다.

Linux 서버 문제 해결

운영 서버 배포 전에 테스트 Stage만 확인하고 싶었습니다.

기존:

docker buildx build \
-t app:test .

문제:

전체 Production Stage까지 실행되어 빌드 시간이 오래 걸렸습니다.

Dockerfile 확인:

FROM node AS test

FROM nginx AS production

테스트 Stage만 실행:

docker buildx build \
--target test \
-t app:test .

결과:

Test Stage 완료

불필요한 Production 빌드를 줄이고 빠르게 검증할 수 있었습니다.

Docker Buildx Build –target 사용 시 주의사항

첫 번째는 지정한 Stage 이름이 Dockerfile에 존재해야 합니다.

두 번째는 Target Stage 이후 단계는 실행되지 않습니다.

세 번째는 최종 배포 이미지와 테스트 이미지를 구분해야 합니다.

네 번째는 Stage 구조를 명확하게 설계하는 것이 중요합니다.

Best Practice

Docker Buildx Build –target 활용 방법:

  • Dockerfile Stage 이름을 명확하게 작성
  • 개발·테스트·운영 Stage 분리
  • CI/CD 단계별 Target 활용
  • 불필요한 빌드 과정 제거
  • Multi-stage Build와 함께 사용
  • 운영 배포 전 테스트 Stage 검증

자주 묻는 질문

Docker Buildx Build –target은 무엇인가요?

Dockerfile의 특정 Build Stage만 실행하는 옵션입니다.

–target은 Dockerfile을 여러 개 만들어야 하나요?

아닙니다.

하나의 Dockerfile에서 여러 Stage를 관리할 수 있습니다.

운영 이미지에도 사용할 수 있나요?

가능합니다.

Production Stage를 지정하여 빌드할 수 있습니다.

Multi-stage Build와 함께 사용해야 하나요?

일반적으로 함께 사용하면 가장 효과적입니다.

마무리

Docker Buildx Build –target은 Multi-stage Dockerfile 환경에서 특정 빌드 단계만 실행할 수 있도록 해주는 중요한 옵션입니다.

개발, 테스트, 운영 환경을 하나의 Dockerfile에서 관리하면서 필요한 단계만 빠르게 실행할 수 있어 빌드 시간을 줄이고 효율적인 Docker 운영이 가능합니다.

특히 CI/CD 환경에서는 테스트와 배포 단계를 분리하는 데 매우 유용하며, 복잡한 Docker 프로젝트를 체계적으로 관리하는 핵심 기능입니다.

댓글 남기기