GitHub와 Cloud Run을 연결해서 자동 배포는 되는데, 서비스가 계속 실패한다면? 환경변수 설정을 확인해보세요!
Next.js 프로젝트를 Google Cloud Run에 배포했는데, 로컬에서는 잘 되던 서비스가 배포 후 작동하지 않는 경우가 있습니다.
원인: .env 파일이 Git에 포함되지 않아서 Cloud Run에서 환경변수를 읽지 못합니다.
# 로컬에서는 .env 파일이 있어서 잘 됨
DATABASE_URL=”postgresql://…”
SOOMGO_EMAIL=”…”
API_KEY=”…”
# Cloud Run에 배포하면?
# → .env 파일이 없어서 에러 발생! 😱
두 가지 방법이 있습니다. 상황에 맞게 선택하세요!
이런 분들께 추천:
프로젝트 폴더에 set-env.sh 파일을 만들고 아래 내용을 넣습니다:
#!/bin/bash
PROJECT_ID=$1
SERVICE_NAME=”your-service-name” # 본인의 서비스 이름
REGION=”asia-northeast3″ # 서울 리전
# Cloud Run에 환경변수 설정
gcloud run services update $SERVICE_NAME \
–region $REGION \
–update-env-vars “\
DATABASE_URL=여기에_DB_주소,\
API_KEY=여기에_API_키,\
OTHER_VAR=여기에_다른_값”
chmod +x set-env.sh
./set-env.sh your-project-id
✅ 완료! 이제 서비스를 다시 확인해보세요.
이런 분들께 추천:
| 항목 | 방법 1 (직접 설정) | 방법 2 (Secret Manager) |
|---|---|---|
| 보안 | Cloud Run 콘솔에서 보임 😅 | 암호화되어 안전하게 저장 🔐 |
| 관리 | 매번 스크립트로 설정 | 한 번 설정하면 자동 적용 |
| 적합한 환경 | 개발/테스트 | 프로덕션 |
setup-secrets.sh 파일 생성:
#!/bin/bash
PROJECT_ID=$1
# Secret Manager API 활성화
gcloud services enable secretmanager.googleapis.com
# 비밀 정보 저장 (예시)
echo -n “postgresql://…” | gcloud secrets create DATABASE_URL –data-file=-
echo -n “your-api-key” | gcloud secrets create API_KEY –data-file=-
echo -n “your-password” | gcloud secrets create PASSWORD –data-file=-
update-service.sh 파일 생성:
#!/bin/bash
PROJECT_ID=$1
SERVICE_NAME=”your-service-name”
REGION=”asia-northeast3″
# Secret Manager의 비밀 정보를 Cloud Run에 연결
gcloud run services update $SERVICE_NAME \
–region $REGION \
–update-secrets=DATABASE_URL=DATABASE_URL:latest,API_KEY=API_KEY:latest,PASSWORD=PASSWORD:latest
chmod +x setup-secrets.sh update-service.sh
# 1단계: Secret Manager에 비밀 정보 저장
./setup-secrets.sh your-project-id
# 2단계: Cloud Run과 연결
./update-service.sh your-project-id
✅ 완료! 이제 비밀 정보가 안전하게 관리됩니다.
Secret Manager를 설정했다면, 앞으로 Git Push만 해도 자동으로 환경변수가 적용되게 만들 수 있습니다!
프로젝트의 cloudbuild.yaml 파일에 다음 내용을 추가:
steps:
# … (기존 빌드 단계들)
– name: ‘gcr.io/google.com/cloudsdktool/cloud-sdk’
entrypoint: gcloud
args:
– ‘run’
– ‘deploy’
– ‘your-service-name’
– ‘–image’
– ‘gcr.io/$PROJECT_ID/your-image:latest’
– ‘–region’
– ‘asia-northeast3’
# 🔥 여기가 핵심! 환경변수 자동 설정
– ‘–update-env-vars’
– ‘NODE_ENV=production,NEXT_PUBLIC_URL=https://…’
# 🔒 Secret Manager 연결
– ‘–update-secrets’
– ‘DATABASE_URL=DATABASE_URL:latest,API_KEY=API_KEY:latest’
git add .
git commit -m “환경변수 설정 완료”
git push origin main
→ GitHub에 푸시하면 자동으로 환경변수가 포함되어 배포됩니다! 🎉
gcloud run services describe your-service-name \
–region asia-northeast3 \
–format ‘yaml(spec.template.spec.containers[0].env)’
# .gitignore에 이미 있는지 확인
.env*
// 코드에서 사용하는 이름
process.env.DATABASE_URL
// Cloud Run에 설정하는 이름도 동일하게
DATABASE_URL=…
→ 방법 1 (직접 설정) 사용
→ 방법 2 (Secret Manager) 사용
→ cloudbuild.yaml에 환경변수 설정 추가
이 글이 도움이 되셨나요? 댓글로 여러분의 경험을 공유해주세요! 💬
태그: #GoogleCloudRun #환경변수 #자동배포 #SecretManager #Next.js #DevOps
이 글에서 소개된 도구가 궁금하신가요?
AI 도구 디렉토리에서 80+ AI 서비스의 가격, 기능, 대안을 비교해보세요.
무료 뉴스레터
매주 엄선된 AI 뉴스와 소상공인을 위한 실전 활용 팁을 이메일로 받아보세요. 이미 10,000+명이 구독 중입니다.
스팸 없이, 언제든 구독 취소 가능합니다.