본문 바로가기
Development/GCP, AWS

Fast API Docker GCP Cloud Run 배포 (도커 설치부터 배포까지)

by 남디윤 2024. 1. 25.

Fast API 배포를 하기 위해 발품을 파는 요즘 날들이였습니다

원래는 VM에 배포하려고 낑낑대다가 더 쉬운 방법이 있다고 해서 찾아보았고

오늘 소개해드릴 방법으로 진행하였습니다.

 

저는 비전공자 출신의 인공지능융합 대학원생이구

특히 요런 서버나 백엔드.. 이런거 잘 모르는데 조금씩 배워나가는 중인 것을 고려해주세용

질문하셔도.. 답 못할 수 있음..!

 

 

1. 도커 설치 및 로그인

도커 편하다라는 이야기는 들었지만 한 번도 직접 써본적이 없어 무서워하다가 오늘 드디어 사용해보았습니다.

도커 컨테이너는 애플리케이션을 개발, 테스트, 배포할 때의 환경을 일관되게 제공해주는 친구입니다.

저도 정확히는 잘 몰라서.. 사실 봐도 잘 감이 아직 덜 오는 비전공자..

 

이고잉님 (생활코딩) 도커 입문 강의를 슉 듣고 진행했었습니다.

https://www.youtube.com/watch?v=Ps8HDIAyPD0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf

 

 

.

먼저 도커 데스크탑을 설치해주었습니다.

(생활코딩 영상 참고하셔도 됩니다.)

 

아래 링크에서 다운 가능

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

 

 

 

이렇게 생긴 대시보드를 볼 수 있구요

 

 

vs code에서도 확장자 설치 해주었습니다.

 

 

생활코딩에서도 나오는데

cmd 창에서

docker images

를 입력했을 때 작동되면 설치가 잘 된 것을 확인할 수 있습니다.

 

 

 

 

2. main.py, dockerfile, requirements.txt 작성

필요한 파일들을 작성해주면 됩니다.

저는 gpt의 도움을 받아 진행했구, main파일의 경우 아주 간단한 fast api 형태로 만들었습니다. (테스트용)

이 글을 보시는 분들 환경에 맞춰 작성하시면 될 것 같습니다!

 

main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/test")
def read_root():
    return {"message": "Hello World"}

 

 

dockerfile

# Python 이미지 사용
FROM python:3.10

# 작업 디렉토리 설정
WORKDIR /app

# 의존성 파일 복사 및 설치
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# 소스 코드 복사
COPY . .

# 컨테이너 시작 시 실행할 명령어
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

 

 

requirements.txt

fastapi
uvicorn

 

 

 

 

3. 구글 프로젝트 생성 및 api 사용 설정

 

새 프로젝트 만들기에서 test 용 프로젝트를 하나 생성해주었고,

 

 

 

[API 및 서비스]에서 [+API 및 서비스 사용 설정] 에서 Google Container Registry API 사용 신청하였습니다.

 

 

 

4. gcloud CLI 설치

아래 공식 문서에 가셔서 컴퓨터 환경에 맞는 CLI 설치 프로그램을 다운하면 됩니다.

https://cloud.google.com/sdk/docs/install?hl=ko

 

gcloud CLI 설치  |  Google Cloud CLI 문서

의견 보내기 gcloud CLI 설치 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에는 Google Cloud CLI 설치를 선택하고 유지하기 위한 안내가 포함되어 있습

cloud.google.com

 

 

 

 

(아래 velog를 참고했습니다.)

https://velog.io/@jeb1225/Google-Cloud-SDK-%EC%84%A4%EC%B9%98

 

GCP- SDK 설치

Google Cloud SDK란? Google Cloud SDK란 Google Cloud 제품 및 서비스와 상호작용하기 위한 도구 및 라이브러리이다. 여기에는 gcloud, bq 등의 커맨드라인 도구가 들어있다. 자세한 내용은 여기를 참고하자. 설

velog.io

 

 

 

설치가 되고 커맨드 창이 열리면 (혹은 cmd 창에)

gcloud init 을 입력합니다.

gcloud init

 

 

이런 창이 뜨면 허용을 해주시면 됩니다.

이후 계정 선택 및 프로젝트 선택을 진행해주시면 됩니다.

 

(혹 만약 다른 프로젝트로 설정을 하시고 싶을 때에도 다시 gcloud init 을 해서 초기화해주신뒤 선택해주시면 됩니다.)

 

 

 

5. 도커 이미지 빌드, 푸시

dockerfile이 있는 곳에서 이미지를 빌드합니다.

(마지막 끝점 필요, 현재 디렉토리를 가리킴)

docker build -t gcr.io/[PROJECT-ID]/[IMAGE-NAME]:[TAG] .

 

 

빌드된 이미지는 docker images를 사용해 확인할 수 있습니다.

 

 

Google Cloud SDK를 사용하여 GCR에 인증합니다. 
(두번째부터는 필수가 아닌듯함)

gcloud auth configure-docker

 

 

빌드된 이미지를 GCR에 푸시합니다.

docker push gcr.io/[PROJECT-ID]/[IMAGE-NAME]:[TAG]

 

 

 

6. Cloud Run

[Cloud Run] 에서 [서비스 만들기] 클릭

 

 

 

기존 컨테이지 이미지에서 버전 1개 배포 칸에서 [선택] 클릭

 

 

 

CONTAINER REGISTRY에서 배포한 앱, 버전을 선택하면 됩니다.

 

 

 

저는 Dockerfile에서 포트를 80으로 설정했기 때문에

컨테이너 포트를 80으로 변경하였습니다.

 

 

상황에 따라 인증을 설정해주면

 

 

 

배포가 완료되고, url이 생성됩니다.

잘 작동되는 모습까지 확인하면 끝!

 

 

 

 

 

 

 

되게 간단해보였지만 생각보다 어려웠던 api 배포..

솔직히 아직도 100프로 이해는 안되지만...

오늘 했다는것에 감격하며 ... 글을 마칩니다 ㅎㅎ