努力未来

Google Cloud Run 이용하여 Springboot 프로젝트 배포하기

홍서현
홍서현Mar 31, 2025

1. Cloud SQL(MySQL) 인스턴스 설정

먼저 Google Cloud SQL에서 MySQL 인스턴스를 생성하고, 외부에서 접근 가능하도록 설정해야 합니다.

항목설명
DB 인스턴스 생성Cloud SQL 콘솔에서 MySQL 인스턴스 생성
외부 접속 허용네트워크 탭에서 로컬 개발 머신 IP 등 외부 IP 허용 설정
테스트MySQL Workbench 등 툴로 로컬에서 DB 접속 테스트
환경 변수 적용Spring Boot 설정 파일(application-prod.yml 등)에 외부 DB 주소로 변경
Tip: 보안을 위해 접속 IP는 최소한으로 제한하는 것을 권장합니다.

2. Dockerfile 작성

Spring Boot 애플리케이션을 컨테이너로 패키징하기 위한 Dockerfile 예시는 다음과 같습니다.

dockerfile
복사편집
# JDK 21 기반 이미지 사용
FROM openjdk:21

# 애플리케이션 포트 개방
EXPOSE 8080

# 빌드한 JAR 파일 복사
COPY build/libs/demo-0.0.1-SNAPSHOT.jar app.jar

# Spring Boot 애플리케이션 실행
ENTRYPOINT ["java", "-jar", "app.jar"]

주의: COPY 경로는 실제 프로젝트 빌드 산출물 위치에 맞게 수정해야 합니다.

3. Google Cloud SDK를 이용한 배포 과정

터미널에서 다음 순서로 진행합니다.

  • 구글 계정 로그인

gcloud auth login

shell
  • Docker 이미지 빌드

docker build -t gcr.io/{PROJECT-ID}/{IMAGE-NAME} .

shell
  • 이미지 존재 여부 확인

docker images

shell
  • Container Registry에 이미지 푸시

docker push gcr.io/{PROJECT-ID}/{IMAGE-NAME}

shell
  • Cloud Run에 배포

gcloud run deploy \
  --image gcr.io/{PROJECT-ID}/{IMAGE-NAME} \
  --platform managed \
  --region asia-northeast3 \
  --allow-unauthenticated

shell

4. 배포 후 서비스 URL 확인

배포가 완료되면 Cloud Run에서 아래와 같은 URL이 출력됩니다.


https://{SERVICE-NAME}-{HASH}-uc.a.run.app

이 URL로 서비스에 접근할 수 있습니다.

5. 배포 시 발생할 수 있는 오류 및 해결법

환경 변수 미적용 문제


java.lang.RuntimeException:
Driver com.mysql.cj.jdbc.Driver claims to not accept jdbcUrl, ${DB_JDBC_URL}

  • 원인: 환경 변수(DB_JDBC_URL)가 Cloud Run에 제대로 전달되지 않아 JDBC URL이 치환되지 않음
  • 해결법: gcloud run deploy-set-env-vars 옵션으로 환경 변수 직접 지정
gcloud run deploy \
  --image gcr.io/{PROJECT-ID}/{IMAGE-NAME} \
  --set-env-vars DB_JDBC_URL="jdbc:mysql://{DB_HOST}:3306/{DB_NAME}" \
  --platform managed \
  --region asia-northeast3

shell

6. 요약 체크리스트

항목완료 여부
Cloud SQL 인스턴스 설정 및 접속 테스트
Dockerfile 작성 및 빌드
GCP 로그인 및 이미지 빌드/푸시
Cloud Run 배포 및 URL 확인
환경 변수 설정 오류 해결