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프로 이해는 안되지만...
오늘 했다는것에 감격하며 ... 글을 마칩니다 ㅎㅎ
'Development > GCP, AWS' 카테고리의 다른 글
[에러 해결] API [sqladmin.googleapis.com] not enabled on project(Cloud SQL PERMISSION DENIED) (0) | 2023.09.06 |
---|