배포 대상은 고유한 정적 애셋을 포함한 호스팅 사이트 또는 동일한 보안 규칙을 공유하는 실시간 데이터베이스 인스턴스 그룹과 같은 Firebase 프로젝트 내 Firebase 리소스의 닉네임 식별자(직접 정의)입니다.
호스팅 사이트, Cloud Storage 버킷 또는 실시간 데이터베이스 인스턴스가 여러 개 있는 경우에 배포 대상을 사용하면 유용합니다. 배포 대상을 활용하면 Firebase CLI는 프로젝트의 특정 Firebase 리소스 또는 리소스 그룹에 다음과 같은 설정을 배포할 수 있습니다.
- 각 호스팅 사이트의 호스팅 구성
- 각 호스팅 사이트 프로젝트 디렉터리의 정적 애셋
- 여러 실시간 데이터베이스 인스턴스 또는 Cloud Storage 버킷에서 공유하는 보안 규칙
배포 대상을 설정하려면 다음 안내를 따르세요.
- 대상 Firebase 리소스 또는 Firebase 리소스 그룹에
TARGET_NAME
을 적용합니다. - 각 리소스 또는 리소스 그룹의 설정을 구성할 경우
firebase.json
파일에서 연결된TARGET_NAME
을 참조합니다.
Firebase CLI 명령어(예: firebase deploy
)를 실행하면 Firebase CLI가 각 TARGET_NAME
을 연결된 Firebase 리소스와 페어링합니다. 그러면 CLI가 각 리소스의 설정을 Firebase 프로젝트에 전달합니다.
Firebase 리소스의 배포 대상 설정
Firebase CLI를 사용하여 TARGET_NAME
(직접 정의하는 닉네임 식별자)을 Firebase 리소스 또는 Firebase 리소스 그룹에 적용합니다.
Firebase는 다음에 대한 배포 대상을 지원합니다.
배포 대상 설정은 프로젝트 디렉터리의 .firebaserc
파일에 저장되므로 프로젝트마다 배포 대상을 한 번만 설정하면 됩니다.
호스팅의 배포 대상 설정
배포 대상을 만들고 TARGET_NAME
을 호스팅 사이트에 적용하려면 다음 CLI 명령어를 실행하세요.
firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER
여기에서 매개변수는 다음과 같습니다.
TYPE - 관련 Firebase 리소스 유형
- Firebase 호스팅 사이트에는
hosting
을 사용합니다.
- Firebase 호스팅 사이트에는
TARGET_NAME - 배포할 호스팅 사이트의 고유한 이름
RESOURCE_IDENTIFIER - Firebase 프로젝트에 나열된 호스팅 사이트의
SITE_ID
예를 들어 Firebase 프로젝트에서 두 개의 사이트(myapp-blog
및 myapp-app
)를 만든 경우 다음 명령어를 실행하여 각 사이트에 고유한 TARGET_NAME
(blog
및 app
)을 적용할 수 있습니다.
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
Cloud Storage 또는 실시간 데이터베이스의 배포 대상 설정
배포 대상을 생성하고 TARGET_NAME
을 Cloud Storage 또는 실시간 데이터베이스 리소스 집합에 적용하려면 다음 CLI 명령어를 실행하세요.
firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...
여기에서 매개변수는 다음과 같습니다.
TYPE - 관련 Firebase 리소스 유형
- Cloud Storage 버킷에는
storage
를 사용합니다. - 실시간 데이터베이스 인스턴스에는
database
를 사용합니다.
- Cloud Storage 버킷에는
TARGET_NAME - 보안 규칙을 공유하는 리소스 또는 리소스 그룹의 고유한 이름
RESOURCE_IDENTIFIER - 모두 동일한 보안 규칙을 공유하는 Firebase 프로젝트에 나열된 리소스 식별자(예: 스토리지 버킷 이름 또는 데이터베이스 인스턴스 ID)
예를 들어 다음 명령어를 실행하여 main
의 TARGET_NAME
을 모두 같은 보안 규칙을 공유하는 세 리전별 Cloud Storage 버킷 그룹에 적용할 수 있습니다.
firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja
myproject.appspot.com
은 기본 버킷의 식별자이고 myproject-eu
와 myproject-ja
는 Firebase 프로젝트에서 생성되는 두 개의 추가 버킷입니다.
배포 대상을 사용하도록 firebase.json 파일 구성
Firebase 리소스의 배포 대상을 설정한 후 firebase.json
구성 파일에서 적용된 각 TARGET_NAME
을 참조합니다.
- Firebase 리소스
TYPE
(hosting
,storage
,database
)별로 구성 객체의 배열을 만듭니다. - 배열에서
target
(TARGET_NAME
사용)을 지정하고 연결된 Firebase 리소스 또는 리소스 그룹의 설정을 정의합니다.
Firebase 프로젝트에 호스팅 사이트 두 개와 Cloud Storage 버킷 세 개(동일한 보안 규칙 공유)가 있는 위 예시의 경우 firebase.json
파일은 다음과 같습니다.
{ "hosting": [ { "target": "blog", // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog" "public": "blog/dist", // contents of this folder are deployed to the site "myapp-blog" // ... }, { "target": "app", // "app" is the applied TARGET_NAME for the Hosting site "myapp-app" "public": "app/dist", // contents of this folder are deployed to the site "myapp-app" // ... "rewrites": [...] // You can define specific Hosting configurations for each site } ] } { "storage": [ { "target": "main", // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets "rules": "storage.main.rules" // the file that contains the shared security rules } ] }
리소스 구성이 여러 개 있으면 배포 대상을 여러 개 만들어 firebase.json
파일에서 각각 지정하면 됩니다. firebase deploy
를 실행하면 연결된 모든 리소스가 함께 배포됩니다.
배포 대상 관리
배포 대상 설정은 프로젝트 디렉터리의 .firebaserc
파일에 저장됩니다. 프로젝트 디렉터리의 루트에서 다음 명령어를 실행하면 프로젝트의 배포 대상을 관리할 수 있습니다.
명령어 | 설명 |
---|---|
firebase target
|
현재 프로젝트 디렉터리의 배포 대상을 나열합니다. |
firebase target:remove \
|
할당된 대상에서 리소스를 삭제합니다. |
firebase target:clear \
|
지정된 대상에서 모든 리소스 또는 호스팅 사이트를 삭제합니다. |
target:remove
명령어와 target:clear
명령어는 프로젝트 디렉터리에 있는 .firebaserc
파일에서 배포 대상 설정을 자동으로 업데이트합니다.
배포하기 전에 로컬에서 테스트
프로젝트 디렉터리의 루트에서 다음 명령어 중 하나를 실행합니다.
명령어 | 설명 |
---|---|
firebase emulators:start
|
프로젝트 디렉터리에 구성된 모든 리소스를 에뮬레이션합니다. |
firebase emulators:start \ |
지정된 호스팅 사이트의 호스팅 콘텐츠와 구성만 에뮬레이션합니다. |
firebase emulators:start \
|
지정된 Cloud Storage 대상의 규칙 파일만 에뮬레이션합니다. |
firebase emulators:start \
|
지정된 실시간 데이터베이스 대상의 규칙 파일만 에뮬레이션합니다. |
Firebase 로컬 에뮬레이터 도구 모음 구성 및 사용에 대해 자세히 알아보세요.
특정 Firebase 리소스 배포
프로젝트 디렉터리의 루트에서 다음 명령어 중 하나를 실행합니다.
명령어 | 설명 |
---|---|
firebase deploy
|
프로젝트 디렉터리에서 배포 가능한 모든 리소스의 출시 버전을 만듭니다. |
firebase deploy \
|
지정된 호스팅 사이트의 호스팅 콘텐츠 및 구성만 사이트의 실시간 채널에 배포합니다. |
firebase hosting:channel:deploy CHANNEL_ID \ |
지정된 호스팅 사이트의 호스팅 콘텐츠 및 구성만 사이트의 미리보기 채널에 배포합니다. |
firebase deploy \
|
지정된 Cloud Storage 대상의 규칙 파일만 배포합니다. |
firebase deploy \
|
지정된 실시간 데이터베이스 대상의 규칙 파일만 배포합니다. |