어쩌다데싸

[GCP] Cloud Run으로 웹서비스 배포하기 본문

ETC

[GCP] Cloud Run으로 웹서비스 배포하기

엔팁 2025. 8. 28. 00:13

웹서비스를 운영하려면 어디서 실행할지 결정해야 합니다. GCP(Google Cloud Platform)에서는 Cloud Run을 이용해 손쉽게 컨테이너 기반 애플리케이션을 배포할 수 있습니다.
이번 글에서는 로컬에서 작성한 Streamlit/Docker 애플리케이션을 Cloud Run에 올리는 과정을 단계별로 정리해보겠습니다.

( 아래 코드는 Mac 을 기준으로 작성되었습니다. 윈도우는 코드 문법이 다를 수 있습니다!)

 

 

1. GCP CLI 설치하기

macOS

Cloud Run을 쓰려면 먼저 Google Cloud SDK(gcloud CLI)를 설치해야 합니다.
macOS 사용자는 Homebrew를 이용하면 간단하게 설치할 수 있습니다.

# Homebrew 사용
brew install --cask google-cloud-sdk

# 버전이 잘 나오면 설치가 잘 된 것
gcloud --version

# 로그인 & 프로젝트 설정
gcloud init
 
👉 gcloud init 명령을 실행하면 브라우저가 열리면서 Google 계정으로 로그인할 수 있고, 기본 프로젝트와 리전을 설정할 수 있습니다.
 

Windows

Windows 사용자는 공식 다운로드 페이지에서 MSI 설치 파일을 받아 실행하면 됩니다.
설치 후에는 PowerShell이나 명령 프롬프트에서 동일하게 gcloud init을 실행하면 됩니다.

 

 

2. 기본 설정

설치가 끝났다면 GCP 프로젝트와 권한을 설정해 줍니다.

gcloud auth login
gcloud config set project <YOUR_PROJECT_ID>
gcloud services enable run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com
 

여기서 <YOUR_PROJECT_ID>는 실제 GCP 프로젝트 ID로 교체해 주세요.

 

 

3. Artifact Registry 생성 (최초 1회)

컨테이너 이미지를 저장할 공간이 필요합니다. GCP의 Artifact Registry는 AWS의 ECR, GitHub의 GHCR과 같은 역할을 합니다.
즉, 우리가 만든 Docker 이미지를 저장(push)하고, Cloud Run이 가져와 실행할 수 있도록 합니다.

 
gcloud artifacts repositories create my-repo \
  --repository-format=docker \
  --location=asia-northeast3 \
  --description="설명 입력"
  • my-repo → 저장소 이름
  • asia-northeast3 → 서울 리전 (원하는 리전 선택 가능)

 

4. 도커 이미지 원격 빌드 & 푸시

이제 애플리케이션이 담긴 Dockerfile을 GCP로 빌드하고, Artifact Registry에 푸시합니다.

# 프로젝트 루트(= Dockerfile 있는 곳)에서 실행 
gcloud builds submit \ --tag asia-northeast3-docker.pkg.dev/<YOUR_PROJECT_ID>/my-repo/my-app:v1
  • <YOUR_PROJECT_ID> → 실제 프로젝트 ID
  • my-repo → 위에서 만든 Artifact Registry 이름
  • my-app:v1 → 이미지 이름과 태그

 

5. Cloud Run 배포

이미지가 준비되었으니 이제 Cloud Run으로 배포합니다. 필요하다면 API 키 같은 환경 변수를 함께 전달할 수 있습니다.

# 환경 변수 등록 (터미널 세션에서만 유지) 
export GEMINI_API_KEY=your_real_key

# Cloud Run 배포 
gcloud run deploy my-app \ --image asia-northeast3-docker.pkg.dev/<YOUR_PROJECT_ID>/my-repo/my-app:v1 \ --region asia-northeast3 \ --allow-unauthenticated \ --set-env-vars GEMINI_API_KEY=$GEMINI_API_KEY \ --memory 1Gi --cpu 1 --port 8080
  • --allow-unauthenticated : 로그인 없이 누구나 접근 가능
  • --set-env-vars : 컨테이너 실행 시 필요한 환경 변수 전달
  • --memory, --cpu : 컨테이너 리소스 크기 지정
  • --port : 애플리케이션이 리슨할 포트 (Cloud Run 기본은 8080)

배포가 완료되면 GCP에서 서비스 URL을 알려주고, 해당 주소로 접속하면 웹서비스가 실행되는 것을 확인할 수 있습니다.