어쩌다데싸
[GCP] Cloud Run으로 웹서비스 배포하기 본문
웹서비스를 운영하려면 어디서 실행할지 결정해야 합니다. 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
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을 알려주고, 해당 주소로 접속하면 웹서비스가 실행되는 것을 확인할 수 있습니다.
'ETC' 카테고리의 다른 글
| 데이터 사이언티스트를 위한 선형대수 정리 (1) - 행렬과 방정식 (0) | 2025.11.23 |
|---|---|
| YouTube API 키 발급 및 Python을 이용한 API 요청 가이드 (1) | 2025.03.07 |
| [마케팅 데이터 분석] 퍼널 분석 & KPI (0) | 2025.02.20 |
| [유데미(Udemy) 강의 후기] Apache Spark 와 Python으로 빅데이터 다루기 (0) | 2024.04.14 |
| [유데미(Udemy) 강의 후기] Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복 (1) | 2024.03.31 |