콘솔로 이동

배포 대상

배포 대상은 고유한 정적 애셋을 포함한 호스팅 사이트 또는 동일한 보안 규칙을 공유하는 실시간 데이터베이스 인스턴스 그룹과 같은 Firebase 프로젝트 내 Firebase 리소스의 별칭 식별자(직접 정의)입니다.

호스팅 사이트, Cloud Storage 버킷 또는 실시간 데이터베이스 인스턴스가 여러 개인 경우에 배포 대상을 사용하면 유용합니다. 배포 대상을 활용하면 Firebase CLI에서 프로젝트의 다음과 같은 특정 Firebase 리소스 또는 리소스 그룹에 설정을 배포할 수 있습니다.

  • 각 호스팅 사이트의 호스팅 구성
  • 각 호스팅 사이트 프로젝트 디렉토리의 정적 애셋
  • 여러 실시간 데이터베이스 인스턴스 또는 Cloud Storage 버킷에서 공유하는 보안 규칙

배포 대상을 설정하려면 다음을 수행하세요.

  1. 대상 Firebase 리소스 또는 Firebase 리소스 그룹에 target name을 적용합니다.
  2. 각 리소스 또는 리소스 그룹의 설정을 구성할 때 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-name

여기에서 매개변수는 다음과 같습니다.

  • type - 해당되는 Firebase 리소스 유형

    • Firebase 호스팅 사이트의 경우 hosting을 사용하세요.
  • target-name - 배포할 호스팅 사이트의 고유 식별자

  • resource-nameFirebase 프로젝트에 나열된 호스팅 사이트의 이름

예를 들어 Firebase 프로젝트에서 두 사이트를 만든 경우(myapp-blogmyapp-app) 다음 명령어를 실행하여 각 사이트에 고유한 target name(각각 blogapp)을 적용할 수 있습니다.

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 resource1-name resource2-name ...

여기에서 매개변수는 다음과 같습니다.

  • type - 해당되는 Firebase 리소스 유형

    • Cloud Storage 버킷의 경우 storage를 사용하세요.
    • 실시간 데이터베이스 인스턴스의 경우 database를 사용하세요.
  • target-name - 보안 규칙을 공유하는 리소스 또는 리소스 그룹의 고유 식별자

  • resource-name - 보안 규칙을 공유하는 Firebase 프로젝트에 나열된 리소스 이름(스토리지 버킷 이름 또는 데이터베이스 인스턴스 이름 등)

예를 들어 다음 명령어를 실행하면 maintarget name을 3개의 리전별 Cloud Storage 버킷(동일한 보안 규칙 공유) 그룹에 적용할 수 있습니다.

firebase target:apply storage main myproject.appspot.com myproject-eu myproject-ja

배포 대상을 사용하도록 firebase.json 파일 구성

Firebase 리소스의 배포 대상을 설정했으면 firebase.json 구성 파일에서 적용된 target name을 참조하세요.

  1. Firebase 리소스 유형(hosting, storage, database)별로 구성 객체의 배열을 만듭니다.
  2. 배열에서 target(target name 사용)을 지정하고 연결된 Firebase 리소스 또는 리소스 그룹의 설정을 정의합니다.

Firebase 프로젝트에 2개의 호스팅 사이트와 3개의 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 Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}

리소스에 대한 구성이 여러 개인 경우에는 배포 대상을 여러 개 만들어 firebase.json 파일에서 각각 지정하면 됩니다. firebase deploy를 호출하면 연결된 모든 리소스가 함께 배포됩니다.

배포 대상을 사용하여 특정 Firebase 리소스에 배포

프로젝트 디렉토리의 루트에서 다음 명령어 중 하나를 실행합니다.

명령 설명
firebase deploy 프로젝트 디렉토리에서 배포 가능한 모든 리소스의 출시 버전을 만듭니다.
firebase deploy --only hosting:target-name 지정된 호스팅 대상의 리소스만 출시 버전으로 만듭니다.
firebase deploy --only storage:target-name 지정된 Cloud Storage 대상의 규칙 파일만 배포합니다.
firebase deploy --only database:target-name 지정된 실시간 데이터베이스 대상의 규칙 파일만 배포합니다.

다음 명령어 중 하나를 실행하여 로컬에서 사이트를 테스트한 후 Firebase 프로젝트에 배포하세요.

firebase serve
firebase serve --only hosting:target-name

배포 대상 관리

배포 대상 설정은 프로젝트 디렉토리의 .firebaserc 파일에 저장됩니다. 프로젝트 디렉토리의 루트에서 다음 명령어를 실행하여 프로젝트의 배포 대상을 관리할 수 있습니다.

명령어 설명
firebase target 현재 프로젝트 디렉토리의 배포 대상을 나열합니다.
firebase target:remove type resource-name 할당된 대상에서 리소스를 삭제합니다.
firebase target:clear type target-name 지정된 대상에서 모든 리소스 또는 호스팅 사이트를 삭제합니다.

removeclear 명령어는 프로젝트 디렉터리에 있는 .firebaserc 파일에서 배포 대상 설정을 자동으로 업데이트합니다.