구글 클라우드 무료 크레딧(3개월)을 사용하여 배포해보았다.
Google Cloud Run이란?
- 컨테이너화된 애플리케이션을 서버리스 방식으로 실행할 수 있는 Google Cloud의 완전 관리형 서비스
- Cloud Run은 애플리케이션을 컨테이너로 패키징하여 실행하고, 이를 관리하는 서버를 자동으로 제공 및 스케일링
- 필요한 만큼만 자원을 소비하므로 사용자는 서버 인프라를 직접 관리할 필요가 없다.
Docker 컨테이너로 배포한 앱을 클라우드로 쉽게 배포할 수 있는 서비스이다!
목차
Google Cloud Run 서비스 생성
0. 아래 링크로 구글 클라우드 접속
Google 클라우드 플랫폼
로그인 Google 클라우드 플랫폼으로 이동
accounts.google.com
1. 프로젝트 생성
프로젝트 탭에서 새 프로젝트를 눌러 프로젝트를 생성한다.
2. Google Cloud Run 서비스 생성
컨테이너 이미지 URL에 도커 hub명/repository명을 적는다.
참고로 도커의 repository가 public이 아니면 에러난다..
나중에 도메인 연결을 할거라면 아래 리전을 선택해야 한다.
도메인 연결 서비스를 제공하지 않는 리전들이 있기 때문이다.
도메인 매핑 가능한 리전
- asia-east1
- asia-northeast1
- asia-southeast1
- europe-north1
- europe-west1
- europe-west4
- us-central1
- us-east1
- us-east4
- us-west1
3. URL 확인해보기
서비스 생성이 완료되면 바로 배포가 완료된다.
URL을 클릭하여 프로젝트 페이지가 나온다면 배포 성공!
DB 연결
1. Cloud SQL 사용
검색 창에 sql을 검색하면 Cloud SQL 서비스가 나온다.
서비스를 클릭하고 콘솔에서 사용해보기를 누른다.
이후 무료 크레딧으로 인스턴스 만들기 선택
2. DB 종류 선택
여기서 본인의 DB 선택 후 API 사용 설정 클릭
3. 인스턴스 만들기
버전은 Enterprise로 선택했다.
(무료 크레딧 버전이어도 뭐든 싼 걸로..)
버전 : Enterprise
머신 구성 : 공유 코어 - vCPU 1개 0.614GB
저장 용량 : SSD - 10GB
default로 하면 최저 구성으로 했을 때보다 약 20배정도 크레딧이 더 나온다.
MySQL 버전과 인스턴스 ID, 루트계정 비밀번호를 입력해주고 인스턴스 생성
이것도 생성하는 데 시간이 꽤 걸린다.
4. 스토리지 생성
Cloud Storage 탭에서 버킷 선택 후 +만들기 버튼으로 새 버킷 생성
5. DB 덤프파일 업로드
생성한 버킷에 들어가서 업로드 클릭 후 DB 덤프 파일(.sql) 업로드
6. DB 덤프파일과 SQL 연결
SQL 탭에서 가져오기 선택
가져오기로 버킷에 있는 .sql 파일 가져오기
7. 공개 IP 추가
Cloud SQL 수정 > 연결 탭을 펼치면 네트워크 추가가 나온다.
아래 IP 추가하기
0.0.0.0/0
(but, 이렇게 하면 보안이 취약하니 VPC 생성 후 비공개 IP로 VPC 추가하는 것을 권장)
8. Google Cloud Run 서비스에서 Cloud SQL 연결
Google Cloud Run에서 새 버전 수정 및 배포 선택
하단으로 스크롤 하다보면 Cloud SQL 연결이 나온다.
방금 만들어준 SQL을 선택하여 연결한다.
9. DB 연결 확인
새로 배포 후 아까 그 URL에 다시 들어가면 DB와 연결된 모습을 볼 수 있다!
Google Cloud Run에서 콘솔 열기
우측 상단에 콘솔 아이콘을 클릭하여 콘솔을 연다.
쉘에 아래 명령어 입력
> gcloud sql connect {구글 클라우드에서 생성한 mysql명} --user=root
비밀번호 입력하고 y 누르기
DB 안으로 들어갈 수 있다!
파일 볼륨 매핑
업로드 기능이나 이미지가 있을 시 파일 디렉토리도 볼륨 매핑이 필요하다.
1. 버킷 생성
아까 만들어둔 버킷으로 대체하겠다.
2. 볼륨 마운팅
Google Cloud Run 서비스에서 새 버전 수정 및 배포
볼륨 탭에서 아까 만들어둔 버킷을 선택한다.
그리고 다시 컨테이너 탭으로 돌아와서 볼륨 마운트 탭으로 간다.
업로드 마운트 경로를 입력한다.
컨트롤러에서 사용했던 경로를 그대로 입력해주면 된다.
배포 완료!
DB와 폴더 연동도 모두 잘 되었다.