
안녕하세요! 오늘은 포트폴리오용 토이프로젝트를 배포할 때 도커로 컨테이너화 시킨 후 GCP Cloud Run을 이용하여 배포하는 법을 포스팅 해볼까 합니다!
먼저, Cloud Run이란 무엇일까요?
즉, Cloud Run은 컨테이너 이미지 또는 정해진 언어에 따라 컴퓨팅 플랫폼이 자동으로 배포해주는 GCP의 리소스라고 볼 수 있습니다.
본 포스팅은 컨테이너 이미지를 빌드하는 과정으로 가보겠습니다.

먼저 배포할 애플리케이션을 준비합니다. 저는 백엔드 개발자이니 백엔드 애플리케이션을 배포해보겠습다.

루트 경로에 Dockerfile을 작성해주시고 Docker image를 빌드합니다. 이때 -t 옵션으로 자신의 도커 허브 아이디/이미지이름 으로 지정해줘서 push 할 때 편하게 지정해줍시다!
docker build -t 내 도커허브 아이디/이미지 이름 .

docker images 명령어로 이미지가 잘 생성되었는지 확인해줍니다!
다음으로 docker push로 내 docker hub에 push를 해줍니다!


도커 허브에 잘 들어와 있습니다!
GCP로 이동 후 클라우드 쉘을 사용을 클릭하여 쉘을 열어줍니다,,,! (로컬 gcp sdk 에서도 가능하나 자꾸 access denied가 떠서,,, 후에 해결하고 해결 방법 올려보겠습니다!)
쉘을 열어준 후 아까 도커허브에 있던 이미지를 pull 해줍니다

docker pull 도커허브 아이디/이미지 이름
Cloud Run에 배포하기 전에 GCP Artifact Registry로 이미지를 푸쉬해줘야 합니다,,,! 다만 우리의 도커 허브에 이미지를 push 하기 위해서 태그를 지정해준거처럼 artifact registry에서 지정한 네이밍으로 태그를 지정해줍니다!
네이밍 예시:
{리전}-docker.pkg.dev/{프로젝트명}/{저장소명}

모르겠으면 저기 복사 버튼 누르면 친절히 복사가 됩니다!
먼저 tag 명령어로 artifact registry에 맞게 명령어를 만들어 주고 registry에 push 해줍니다!
Tag 명령어
docker tag rlawogur816/daeng-nyang-be:latest asia-northeast3-docker.pkg.dev/supercoding-prj3/supercoding-prj3/daeng-nyang-be:latest
Push 명령어
docker push asia-northeast3-docker.pkg.dev/supercoding-prj3/supercoding-prj3/daeng-nyang-be:latest

artifact registrty에 도착한 이미지를 확인해준 뒤 Cloud Run으로 이동합니다.

새 서비스 배포 버튼을 클릭 후 아까 push한 registrty에 이미지를 선택해줍니다.
이 때 port 번호는 백엔드 애플리케이션에서 쓰는 port번호로 사용해주세요!
또한 변수 및 보안 비밀 탭에서 자신이 쓰는 환경변수(ex: Aws key, DBURL, 등등)를 지정해줍니다!


과금이 적게될 정도의 사양으로 설정해준 뒤 배포를 클릭합니다!

등록된 URL로 접속을 해주면 백엔드 애플리케이션의 홈 화면이 Swagger로 잘 이동합니다!

이렇게 컨테이너 이미지를 이용해 배포를 해봤습니다!
GCP IAM:
https://cloud.google.com/iam/docs/granting-changing-revoking-access?hl=ko
GCP Artifact Registry:
https://cloud.google.com/artifact-registry?hl=ko
GCP Cloud Run:
https://cloud.google.com/run?hl=ko
Docker:
https://www.oracle.com/kr/cloud/cloud-native/container-registry/what-is-docker/