[python] FastAPI에서 Docker 컨테이너화하기

Docker는 애플리케이션을 격리된 환경에서 실행할 수 있는 가상화 플랫폼입니다. FastAPI는 Python을 기반으로한 효율적이고 빠른 웹 프레임워크인데, Docker를 사용하여 FastAPI 애플리케이션을 컨테이너화하는 방법을 알아보겠습니다.

Docker 설치

먼저, Docker를 설치해야 합니다. Docker는 공식 웹사이트(https://docs.docker.com/get-docker/)에서 다운로드하고 설치할 수 있습니다.

FastAPI 애플리케이션 작성

FastAPI 애플리케이션을 작성해보겠습니다. 아래 코드는 간단한 FastAPI 앱을 생성하는 예시입니다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

Dockerfile 작성

FastAPI 앱을 Docker 컨테이너로 만들기 위해 Dockerfile을 작성해야 합니다. Dockerfile은 애플리케이션을 실행하기 위한 환경을 설정합니다.

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

COPY ./app /app

위의 Dockerfile은 공식적으로 유지되고 있는 FastAPI를 기반으로 하는 이미지인 tiangolo/uvicorn-gunicorn-fastapi를 사용합니다. COPY 명령어는 현재 디렉토리의 app 폴더를 컨테이너의 /app 디렉토리로 복사합니다.

컨테이너 실행

이제 Docker 컨테이너를 실행해보겠습니다. 아래의 명령어를 사용하여 Docker 이미지를 빌드하고 컨테이너를 실행할 수 있습니다.

$ docker build -t my-fastapi-app .
$ docker run -d --name my-app -p 8000:80 my-fastapi-app

첫 번째 명령어는 Docker 이미지를 빌드하고 my-fastapi-app이라는 이름을 지정합니다. 두 번째 명령어는 이미지를 기반으로 컨테이너를 실행하고 호스트의 8000 포트를 컨테이너의 80 포트로 연결합니다.

테스트

웹 브라우저나 curl 명령어를 사용하여 FastAPI 애플리케이션에 접속해보겠습니다.

$ curl http://localhost:8000

아래와 같은 응답이 나와야 합니다.

{"message": "Hello, World!"}

결론

이제 FastAPI 애플리케이션을 Docker 컨테이너로 만드는 방법을 알아보았습니다. Docker를 사용하면 애플리케이션을 손쉽게 격리된 환경에서 실행할 수 있으며, 이는 개발 환경의 일관성과 배포의 편의성을 증가시킵니다. FastAPI와 Docker의 조합은 빠르게 확장 가능한 웹 애플리케이션을 개발하기에 매우 유용합니다.

참고 자료: