Docker Buildx Build –file 사용법 완벽 가이드! Dockerfile 지정하기

Docker 이미지를 생성할 때 기본적으로 Docker는 현재 폴더의 Dockerfile이라는 이름의 파일을 자동으로 찾습니다.

기본 빌드:

docker buildx build .

Docker는 현재 디렉터리에서:

./Dockerfile

파일을 찾아 빌드를 진행합니다.

하지만 실제 프로젝트에서는 Dockerfile을 여러 개 사용하는 경우가 많습니다.

예:

  • Dockerfile.dev
  • Dockerfile.prod
  • Dockerfile.test
  • Dockerfile.nginx
  • Dockerfile.backend

이때 원하는 Dockerfile을 지정하기 위해 사용하는 옵션이 바로 **--file**입니다.

예:

docker buildx build \
--file Dockerfile.prod \
-t app:prod .

특정 Dockerfile을 선택하여 이미지를 생성할 수 있습니다.

이번 글에서는 Docker Buildx Build –file의 개념부터 기본 사용법, 여러 Dockerfile 관리 방법, 개발·운영 환경 분리, CI/CD 활용 방법까지 자세히 알아보겠습니다.

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

--file은 사용할 Dockerfile의 경로와 이름을 지정하는 옵션입니다.

기본 형식:

docker buildx build \
--file Dockerfile경로 .

짧은 형태:

docker buildx build \
-f Dockerfile경로 .

두 옵션은 동일하게 동작합니다.

Dockerfile 기본 동작 방식

일반적인 빌드:

docker buildx build .

Docker는 자동으로:

현재 폴더

↓

Dockerfile 검색

↓

이미지 빌드

를 수행합니다.

하지만 Dockerfile 이름이 다르면 직접 지정해야 합니다.

Docker Buildx Build –file 기본 사용법

예:

프로젝트 구조:

project/

├── Dockerfile.dev

├── Dockerfile.prod

└── source/

운영 Dockerfile 사용:

docker buildx build \
--file Dockerfile.prod \
-t app:prod .

개발 Dockerfile 사용:

docker buildx build \
--file Dockerfile.dev \
-t app:dev .

환경별 이미지를 만들 수 있습니다.

Docker Buildx Build -f와 –file 차이

긴 형식:

docker buildx build \
--file Dockerfile.prod .

짧은 형식:

docker buildx build \
-f Dockerfile.prod .

차이:

기능 동일

표현 방식만 다름

실무에서는 -f를 많이 사용합니다.

다른 경로의 Dockerfile 지정하기

Dockerfile이 다른 폴더에 있는 경우:

프로젝트:

project/

├── docker/

│   └── Dockerfile.prod

└── app/

빌드:

docker buildx build \
-f docker/Dockerfile.prod \
-t app:v1 .

원하는 위치의 Dockerfile을 사용할 수 있습니다.

Docker Buildx Build –file 실무 활용 예제

개발·운영 Dockerfile 분리

구조:

Dockerfile.dev

Dockerfile.stage

Dockerfile.prod

개발:

docker buildx build \
-f Dockerfile.dev \
-t app:dev .

운영:

docker buildx build \
-f Dockerfile.prod \
-t app:prod .

하나의 프로젝트에서 환경별 빌드가 가능합니다.

Docker Compose와 Dockerfile 지정

Docker Compose:

services:

  app:
    build:
      context: .
      dockerfile: Dockerfile.prod

Buildx에서도 동일한 방식으로 특정 Dockerfile을 사용할 수 있습니다.

CI/CD 환경 활용

배포 환경별 Dockerfile 사용:

docker buildx build \
-f Dockerfile.production \
-t company/app:${VERSION} \
--push .

CI 파이프라인에서 원하는 빌드 환경을 선택할 수 있습니다.

Linux 서버 문제 해결

배포 서버에서 빌드를 진행했습니다.

기존:

docker buildx build .

문제:

Dockerfile 없음

프로젝트 확인:

Dockerfile.prod 존재

해결:

docker buildx build \
-f Dockerfile.prod \
-t app:prod .

결과:

Dockerfile.prod 정상 사용

이미지가 정상적으로 생성되었습니다.

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

첫 번째는 지정한 Dockerfile 경로가 정확해야 합니다.

두 번째는 Build Context 경로와 Dockerfile 위치를 구분해야 합니다.

세 번째는 Dockerfile 이름만 변경했다고 이미지 내용이 자동 변경되는 것은 아닙니다.

네 번째는 환경별 Dockerfile 관리 규칙을 정하는 것이 좋습니다.

Best Practice

Docker Buildx Build –file 활용 방법:

  • 개발·운영 Dockerfile 분리
  • 명확한 파일 이름 사용
  • CI/CD 환경별 Dockerfile 지정
  • Dockerfile 경로 관리
  • Build Context와 구분
  • 반복되는 설정은 Multi-stage Build 활용

자주 묻는 질문

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

사용할 Dockerfile을 직접 지정하는 옵션입니다.

-f와 –file은 같은 기능인가요?

네.

동일한 기능을 제공합니다.

Dockerfile 이름을 변경하면 어떻게 하나요?

--file 또는 -f 옵션으로 새 파일명을 지정해야 합니다.

Dockerfile이 다른 폴더에 있어도 사용할 수 있나요?

가능합니다.

파일 경로를 지정하면 됩니다.

마무리

Docker Buildx Build –file은 여러 Dockerfile을 관리하는 프로젝트에서 필수적으로 사용하는 옵션입니다.

개발 환경, 테스트 환경, 운영 환경별 Dockerfile을 분리하고 원하는 파일을 선택하여 빌드할 수 있어 복잡한 프로젝트를 더욱 효율적으로 관리할 수 있습니다.

특히 CI/CD 환경에서는 환경별 Dockerfile을 명확하게 구분하여 안정적인 이미지 빌드 파이프라인을 구성하는 데 매우 유용합니다.

댓글 남기기