Google Cloud Run 은 서버리스 애플리케이션을 배포하고 확장하기 위한 관리형 플랫폼입니다. Google 이 인프라를 처리합니다.
이 가이드에서는 Dockerfile 을 사용하여 Bun HTTP 서버를 Google Cloud Run 에 배포합니다.
NOTE
계속하기 전에 다음이 준비되어 있는지 확인하세요:- 배포할 준비가 된 Bun 애플리케이션
- 결제가 활성화된 Google Cloud 계정
- 설치 및 설정이 완료된 Google Cloud CLI
gcloud 초기화 및 프로젝트 선택/생성
Google Cloud CLI 를 초기화했는지 확인하세요. 이 명령은 로그인하고 기존 프로젝트를 선택하거나 새 프로젝트를 생성하도록 안내합니다.
Google Cloud CLI 에 대한 자세한 내용은 공식 문서 를 참조하세요.
gcloud initWelcome! This command will take you through the configuration of gcloud.
You must sign in to continue. Would you like to sign in (Y/n)? Y
You are signed in as [email@example.com].
Pick cloud project to use:
[1] existing-bun-app-1234
[2] Enter a project ID
[3] Create a new project
Please enter numeric choice or text value (must exactly match list item): 3
Enter a Project ID. my-bun-app
Your current project has been set to: [my-bun-app]
The Google Cloud CLI is configured and ready to use!(선택사항) 프로젝트 정보를 환경 변수에 저장
프로젝트 ID 와 번호를 변수로 설정하여 다음 단계에서 쉽게 재사용할 수 있습니다.
PROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='name="my bun app"')
PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='name="my bun app"')
echo $PROJECT_ID $PROJECT_NUMBERmy-bun-app-... [PROJECT_NUMBER]결제 서비스 계정 연결
사용 가능한 결제 계정을 나열하고 프로젝트에 연결합니다:
gcloud billing accounts listACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID] My Billing Account True결제 계정을 프로젝트에 연결합니다. [BILLING_ACCOUNT_ID] 를 결제 계정 ID 로 교체합니다.
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...API 활성화 및 IAM 역할 구성
필요한 서비스를 활성화하고 Cloud Build 권한을 부여합니다:
gcloud services enable run.googleapis.com cloudbuild.googleapis.com
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/run.builderNOTE
이 명령은 소스에서 배포하는 데 필요한 Cloud Run(`run.googleapis.com`) 과 Cloud Build(`cloudbuild.googleapis.com`) 를 활성화합니다. Cloud Run 은 컨테이너화된 앱을 실행하고 Cloud Build 는 빌드 및 패키징을 처리합니다.IAM 바인딩은 Compute Engine 서비스 계정 ($PROJECT_NUMBER-compute@developer.gserviceaccount.com) 에게 대신 이미지를 빌드하고 배포할 수 있는 권한을 부여합니다.
Dockerfile 추가
프로젝트 루트에 새 Dockerfile 을 만듭니다. 이 파일에는 컨테이너를 초기화하고 로컬 프로젝트 파일을 복사하고 종속성을 설치하고 애플리케이션을 시작하는 지침이 포함되어 있습니다.
# 애플리케이션 실행을 위한 공식 Bun 이미지 사용
FROM oven/bun:latest
# package.json 과 bun.lock 을 컨테이너에 복사
COPY package.json bun.lock ./
# 종속성 설치
RUN bun install --production --frozen-lockfile
# 나머지 애플리케이션을 컨테이너에 복사
COPY . .
# 애플리케이션 실행
CMD ["bun", "index.ts"]NOTE
시작 명령이 애플리케이션의 진입점에 해당하는지 확인하세요. `package.json` 에 시작 스크립트가 있는 경우 `CMD ["bun", "run", "start"]` 를 사용할 수도 있습니다.이 이미지는 종속성을 설치하고 컨테이너 내에서 Bun 으로 앱을 실행합니다. 앱에 종속성이 없는 경우 RUN bun install --production --frozen-lockfile 라인을 생략할 수 있습니다.
프로젝트 루트에 새 .dockerignore 파일을 만듭니다. 이 파일에는 node_modules 와 같이 컨테이너 이미지에서 제외 해야 하는 파일과 디렉터리가 포함되어 있습니다. 이렇게 하면 빌드가 더 빠르고 작아집니다:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# 제외하려는 기타 파일 또는 디렉터리서비스 배포
Dockerfile 이 있는 디렉터리에 있는지 확인한 후 로컬 소스에서 직접 배포합니다:
NOTE
선호하는 지역으로 `--region` 플래그를 업데이트하세요. 지역을 선택하기 위한 대화형 프롬프트를 받으려면 이 플래그를 생략할 수도 있습니다.gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticatedDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named
[cloud-run-source-deploy] in region [us-west1] will be created.
Do you want to continue (Y/n)? Y
Building using Dockerfile and deploying container to Cloud Run service [my-bun-app] in project [my-bun-app-...] region [us-west1]
✓ Building and deploying... Done.
✓ Validating Service...
✓ Uploading sources...
✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds...].
✓ Creating Revision...
✓ Routing traffic...
✓ Setting IAM Policy...
Done.
Service [my-bun-app] revision [my-bun-app-...] has been deployed and is serving 100 percent of traffic.
Service URL: https://my-bun-app-....us-west1.run.app실행 중인 애플리케이션 방문하기
🎉 Bun 애플리케이션이 이제 실행되었습니다!
서비스 URL(https://my-bun-app-....us-west1.run.app) 을 방문하여 모든 것이 예상대로 작동하는지 확인하세요.