대부분의 경우 Firebase Console에서 자동 출시 또는 수동으로 트리거된 출시를 사용하는 것이 좋습니다. 하지만 더 맞춤화된 배포 흐름이 필요할 수도 있습니다. App Hosting에는 맞춤 배포를 위한 여러 옵션이 있습니다.
Firebase CLI를 사용하여 소스에서 배포
Firebase CLI를 사용하면 로컬 머신에서 Firebase로 앱의 소스 코드와 구성을 직접 푸시할 수 있습니다. 다른 Firebase 배포 (예: 보안 규칙 또는 함수)가 있고 단일 CLI 명령어로 웹 앱과 백엔드 서비스를 함께 배포하려는 경우에 유용합니다.
배포 시 App Hosting는 소스 코드를 Google Cloud Storage 버킷에 업로드하고, Cloud Build에서 프레임워크 빌드 명령어를 실행하고, 최종 아티팩트를 Cloud Run 및 Cloud CDN에 배포합니다. App Hosting는 GitHub 배포와 마찬가지로 로컬 소스 배포에도 동일한 빌드 프로세스를 사용합니다.
로컬 소스에서 앱을 배포하려면 다음 안내를 따르세요.
- 로컬 프로젝트 디렉터리에서
firebase init apphosting
를 실행합니다. - 프롬프트에서 기존 프로젝트 사용을 선택한 다음 선택한 Firebase 프로젝트를 선택합니다.
배포할 새 백엔드 또는 기존 백엔드를 선택합니다. 이 단계에서는 로컬 디렉터리의 App Hosting 배포를 설정하여 앱을 성공적으로 배포하는 데 필요한 정보 App Hosting를 묻는 메시지를 표시합니다.
- 배포할 백엔드의 ID
- 배포할 리전 (새 백엔드를 만드는 경우)
- 애플리케이션 코드의 루트 디렉터리 경로
App Hosting는
firebase.json
에 배포 환경설정을 저장합니다 (파일이 없는 경우 로컬 프로젝트에 파일을 만듦). 초기화가 완료되면firebase deploy
를 실행하여 소스 코드를 App Hosting에 배포할 수 있습니다.
여러 백엔드에 대해 로컬 소스 배포가 설정되어 있는 경우 (즉, firebase.json
에 backendId
항목이 여러 개 있는 경우) firebase deploy
는 이러한 각 백엔드에 배포됩니다. 특정 백엔드에 배포하려면 firebase deploy --only apphosting:backendId
를 사용합니다.
firebase.json 예
{
"apphosting": [
{
"backendId": "my-backend",
// rootDir specifies the directory containing the app to deploy, but the entire
// parent directory of firebase.json will be zipped and uploaded to ensure that
// dependencies outside of the app directory will be available at build time.
"rootDir": "./my-app",
"ignore": [
"node_modules",
".git",
"firebase-debug.log",
"firebase-debug.*.log",
"functions",
],
},
]
}
Terraform을 사용하여 배포
빌드 프로세스와 배포된 환경을 더 세부적으로 제어해야 하는 경우 Terraform을 사용하여 배포할 수 있습니다. Terraform을 사용하면 선언적 구성 파일을 사용하여 App Hosting 리소스를 정의하고 관리할 수 있으며, App Hosting가 소스 코드에서 빌드하는 대신 미리 빌드된 자체 컨테이너 이미지를 App Hosting에 직접 배포할 수 있습니다.
Terraform을 처음 사용하는 경우 Terraform 및 Firebase 시작하기를 참고하세요. Terraform에 이미 익숙하다면 샘플 구성 파일과 기타 App Hosting 리소스로 시작할 수 있습니다.
Firebase Studio를 사용하여 배포
Firebase Studio에서 앱 프로토타입 제작 에이전트로 웹 앱을 만들면 Firebase Studio에서 직접 Firebase App Hosting에 게시하거나 배포할 수 있습니다. App Hosting으로 앱 게시를 참고하세요.