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을 명확하게 구분하여 안정적인 이미지 빌드 파이프라인을 구성하는 데 매우 유용합니다.