[GCP] Google Cloud Run을 이용해 Spring Boot project배포

2024. 7. 21. 17:40·Cloud/GCP

 

GCR을 이용한 배포는 

다음과같이 간단한 구조를 가지고 있습니다.

 

1. Artifact Registry(Docker Image Repository) (Image)

2. Google Cloud Run (Container)

 

 

Artifact는 Docker Image를 저장해두는 리포지토리입니다.

Google Cloud Run은 Artifact저장소에서 하나의 도커 이미지를 선택해 해당 이미지로 컨테이너를 생성합니다.

 

생각해보면 아주 간단한 구조입니다.. 애초에 Cloud Run자체가 이런 구조를띄기 떄문에, 이러한 플로우를 이해하게된다면

CI / CD도 자연스럽게 이해가 될 수 있었습니다.

 

또한 Google Cloud Run은 서버리스를 기반으로 동작하기떄문에 , 필요한 플랫폼을 따로 설치하지않아도(java... 등) 간단하게 배포가

가능하다는점에서 이점을 가지고 있습니다.

 

 

 

이번 포스팅에서는 CI / CD를 제외한, 수동 배포 방식에대해서 설명드리도록 하겠습니다.

 

 

 

Dockerfile 생성

FROM openjdk:17-slim

COPY build/libs/*.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

 

 

도커와 8080로 맞물린, 빌드된 스프링부트 jar파일로부터 컨테이너 이미지를 만드는 Dockerfile입니다.

 

 

Artifact Registry 생성

 

$ gcloud artifacts repositories create 프로젝트 이름/폴더 이름 \
  --project=프로젝트 이름 --location=asia-east1\
  --repository-format=docker --description="Docker repository"

 

 

 

 

위 커맨드를 입력하면, GCP상의 artifact registry에 내 저장소가 생성되게 됩니다.

 

 

 

Docker image 생성  (build)

 

 

내 로컬머신에서, Dockerfile을 이용해 빌드된 스프링부트 jar 파일을 컨테이너 이미지로 만들어 줍니다.

 

 

 

 

* (주의) Apple m1 머신에서 docker build 하는경우

m1에서의 docker image와, gcp에서 구동가능한 docker image는 플랫폼이 다릅니다. 따라서, 

위와같은 방식을 사용하지 말고 , 아래와 같이 buildx를 이용해 gcp의 플랫폼에 맞는 x86용 docker image를 build 해주어야 합니다.

docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t 이미지-이름 .

 

 

 

 

Docker image 푸시

 

 

 

빌드한 도커 이미지를 아까 만든 gcp artifact registry에 푸쉬해주어야 합니다. 그러기위해선,

해당 도커 이미지의 이름을 내 artifact registry의 경로명과 일치시켜주어야합니다.

 

docker tag 처음에만든-이미지-이름 asia-east1-docker.pkg.dev/프로젝트-이름/아티팩트-저장소-이름/이미지-이름

 

tag명령어를통해, 이미지이름을 변경시켜줍니다.

 

 

그 후 , artifact에 해당 docker image를 푸시해줍니다.

 

gcloud push asia-east1-docker.pkg.dev/프로젝트-이름/아티팩트-저장소-이름/이미지-이름

 

 

Cloud Run 만들기

 

 

서비스 만들기 버튼을 클릭합니다.

 

 

 

 

컨테이너 이미지 URL선택을 누른 후 , 아까 만든 레지스트리의 이미지를 선택하면 배포가 완료됩니다.

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Cloud > GCP' 카테고리의 다른 글

[GCP] application.properties의 민감한 정보 환경변수 등록하기  (0) 2024.07.21
[GCP] Cloud Build를 이용해, CI/CD 파이프라인 적용해보기  (0) 2024.07.21
'Cloud/GCP' 카테고리의 다른 글
  • [GCP] application.properties의 민감한 정보 환경변수 등록하기
  • [GCP] Cloud Build를 이용해, CI/CD 파이프라인 적용해보기
keemjoonsung
keemjoonsung
  • keemjoonsung
    구동
    keemjoonsung
  • 전체
    오늘
    어제
  • keemjoonsung
    • 분류 전체보기 (81)
      • Projects (7)
        • web (4)
        • plugin (3)
      • Trouble Shootings (5)
        • 성능 개선 (4)
        • 버그 해결 (1)
      • Backend (7)
        • Spring Boot (5)
        • Java (0)
        • Elasticsearch (1)
        • Redis (1)
      • PS (50)
        • 자료구조 (11)
        • 다이나믹프로그래밍 (18)
        • 브루트포스(dfs,bfs,backtracking) (13)
        • 구현 (2)
        • 이분탐색 (1)
        • 그리디 (0)
        • 다익스트라 (3)
        • 기타 알고리즘 (2)
      • Cloud (5)
        • AWS (2)
        • GCP (3)
      • CS (5)
        • network (1)
        • algorithm (4)
      • Etc (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    다이나믹프로그래밍
    백준
    Plugin
    dfs
    jpa
    java
    spring boot
    자바
    ps
    레디스
    페이지
    스프링
    Spring
    배포
    redis
    BFS
    코테
    dp
    헥사고날 아키텍쳐
    intellj
    우선순위큐
    다익스트라
    코딩테스트
    인텔리제이
    헥사고널
    스프링부트
    baekjoon
    스프링 부트
    GCP
    브루트포스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
keemjoonsung
[GCP] Google Cloud Run을 이용해 Spring Boot project배포
상단으로

티스토리툴바