본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

모노레포 및 다중 환경 배포

원문 보기 위키 갱신

기본적으로 fly deploy는 현재 작업 디렉토리의 fly.toml 파일, Dockerfile, 소스 코드를 빌드하고 배포해요. 단일 앱을 배포하는 데는 충분하지만, flyctl을 구성해 모노레포에서 여러 앱을 빌드·배포하거나 하나의 앱을 여러 대상으로 배포할 수도 있어요.

출처: 문서

본문

경로(Paths)

작업 디렉토리

fly deploy의 첫 번째 인자는 앱의 소스 코드 작업 디렉토리 경로예요. Dockerfile 및 Buildpack 빌드의 경우 이 경로는 Docker 데몬으로 전송되는 빌드 컨텍스트가 돼요. 기본값은 현재 작업 디렉토리예요.

경로를 지정해 재정의할 수 있어요:

fly deploy ./path/to/app

fly.toml 경로

기본적으로 fly deploy는 작업 디렉토리에서 fly.toml을 찾아요. --config 옵션으로 재정의할 수 있어요.

fly deploy --config ./path/to/fly.toml

Dockerfile 경로

기본적으로 fly deploy는 작업 디렉토리에서 Dockerfile을 찾아요. --dockerfile 옵션으로 재정의할 수 있어요.

fly deploy --dockerfile ./path/to/Dockerfile

다단계 빌드 타겟(Multi-stage Build Target)

기본적으로 다단계 dockerfile의 마지막 단계가 배포되는 이미지로 내보내져요. --build-target 옵션으로 특정 단계에서 멈출 수 있어요:

fly deploy --build-target web
fly deploy --build-target api
fly deploy --build-target worker

옵션 조합하기

작업 디렉토리를 지정하면 --config와 --dockerfile 경로는 현재 디렉토리가 아니라 작업 디렉토리(빌드 컨텍스트)를 기준으로 해요.

예를 들어 이런 구조가 있다면:

repo/
├── flyio/
│   └── my-app.toml
└── my-app/
    └── Dockerfile

./flyio/my-app.toml이 ./my-app 안에 존재하지 않으므로 이렇게는 안 돼요:

fly deploy ./my-app --config ./flyio/my-app.toml

대신 작업 디렉토리 기준의 상대 경로를 사용하세요:

fly deploy ./my-app --config ../flyio/my-app.toml

예제

환경별로 다른 fly.toml 파일 사용하기

fly deploy --config ./fly.production.toml
fly deploy --config ./fly.staging.toml

환경별로 다른 Dockerfile 사용하기

fly deploy --dockerfile ./Dockerfile.production
fly deploy --dockerfile ./Dockerfile.staging

하위 디렉토리 배포하기

fly deploy ./apps/api

여러 Fly App과 다단계 Dockerfile 공유하기

fly deploy --config fly.api.toml --build-target api

더 알아보기 (Learn more)