FastAPI 서버개발, FastAPI 애플리케이션을 Docker 컨테이너로 배포하기

FastAPI는 최신 Python 웹 프레임워크 중 하나로, 빠른 개발 속도와 높은 성능을 제공합니다. 특히 RESTful API를 쉽게 만드는 데 적합하며, 비동기 프로그래밍 모델을 지원하여 고성능 웹 서비스를 구축할 수 있습니다. 이 블로그 글에서는 FastAPI 애플리케이션을 Docker 컨테이너로 배포하는 방법을 자세히 설명하도록 하겠습니다.

목차

1. FastAPI 애플리케이션 만들기

FastAPI 애플리케이션을 만들기 위해서는 먼저 필요한 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 FastAPI와 UVicorn (ASGI 서버)을 설치합니다.

pip install fastapi uvicorn

이제 간단한 FastAPI 애플리케이션을 만들어 보겠습니다. 아래 코드는 기본적인 “Hello, World!” API를 생성합니다.

from fastapi import FastAPI

app = FastAPI()

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

위 코드를 main.py라는 이름의 파일로 저장합니다. 이 애플리케이션을 실행하기 위해서는 다음 명령어를 입력합니다.

uvicorn main:app --reload

이제 웹 브라우저를 열어 http://127.0.0.1:8000에 접속하면 {“Hello”: “World”}라는 JSON 응답을 확인할 수 있습니다.

2. Docker 환경 설정

Docker를 사용하면 FastAPI 애플리케이션을 컨테이너화하여 쉽게 배포할 수 있습니다. Docker가 설치되어 있지 않다면, [Docker 공식 웹사이트](https://www.docker.com/get-started)에서 설치할 수 있습니다.

Docker 설치가 완료되면, Docker가 정상적으로 작동하는지 확인하기 위해 아래 명령어를 입력해보세요.

docker --version

정상적으로 설치되었다면 Docker 버전이 출력될 것입니다.

3. Dockerfile 작성

Dockerfile은 Docker 이미지를 생성하기 위한 명세서입니다. FastAPI 애플리케이션을 Docker로 실행하기 위한 Dockerfile을 아래와 같이 작성합니다.

# Dockerfile
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9

COPY ./app /app

# 애플리케이션 디렉토리 설정
WORKDIR /app

# 필요한 패키지 설치
RUN pip install --no-cache-dir fastapi

# UVicorn 서버를 사용하여 애플리케이션 실행
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

위 Dockerfile에서는 FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9를 사용하여 FastAPI를 위한 기본 이미지를 설정합니다. 그 다음, 애플리케이션 파일을 Docker 이미지로 복사하고, 필요한 패키지를 설치한 후 UVicorn을 통해 FastAPI 애플리케이션을 실행하도록 설정합니다.

4. Docker 이미지 빌드

Dockerfile을 작성한 후, 이제 Docker 이미지를 빌드합니다. 다음 명령어를 사용하여 Docker 이미지를 생성할 수 있습니다.

docker build -t myfastapiapp .

여기서 -t 플래그는 이미지를 태그하는 것으로, 후에 컨테이너를 실행할 때 이 태그를 사용하게 됩니다.

5. Docker 컨테이너 실행

성공적으로 Docker 이미지를 빌드한 후, 이제 컨테이너를 실행할 수 있습니다. 아래 명령어를 사용하여 컨테이너를 실행합니다.

docker run -d --name fastapi_container -p 8000:80 myfastapiapp

여기서 -d 플래그는 디태치드 모드로 컨테이너를 실행하며, --name 플래그는 컨테이너의 이름을 설정합니다. -p 플래그는 로컬의 8000 포트를 Docker 컨테이너의 80 포트와 연결합니다.

컨테이너가 실행 중인지 확인하려면 다음 명령어를 입력합니다.

docker ps

이제 웹 브라우저를 열고 http://127.0.0.1:8000에 접속하면 FastAPI 애플리케이션이 정상적으로 작동하는 것을 확인할 수 있습니다.

6. 결론

이번 글에서는 FastAPI 애플리케이션을 Docker 컨테이너로 배포하는 방법을 다뤄보았습니다. FastAPI의 설치부터 시작하여 Docker 환경 설정, Dockerfile 작성, 이미지 빌드, 컨테이너 실행까지의 모든 과정을 살펴보았습니다. 이제 여러분은 FastAPI 애플리케이션을 손쉽게 Docker로 배포할 수 있는 기반을 갖추게 되셨습니다.

Docker는 애플리케이션을 컨테이너화하여 실행 환경을 일관되게 제공해주는 강력한 도구입니다. 이를 통해 개발자는 다양한 플랫폼에서 애플리케이션을 쉽게 배포하고 관리할 수 있습니다. FastAPI와 Docker의 조합은 현대의 웹 개발에서 필수적인 기술 중 하나가 될 것입니다.

앞으로도 FastAPI와 같은 최신 기술을 활용하여 더욱 향상된 웹 서비스 개발에 도전해보시기 바랍니다!