FastAPI 서버개발, Docker 동작 확인

FastAPI는 현대적인 웹 애플리케이션 및 API 개발에 적합한 Python 프레임워크입니다. 그 주요 장점은 높은 성능과 직관적인 사용성입니다. 이번 글에서는 FastAPI를 이용한 기본적인 백엔드 서버 개발 방법과 Docker를 이용한 환경 구성 및 동작 확인 절차에 대해 자세히 설명하겠습니다.

1. FastAPI 개요

FastAPI는 ASGI(Asynchronous Server Gateway Interface)를 기반으로 하며, 비동기 프로그래밍을 지원합니다. 또한 FastAPI는 Python의 타입 힌트를 적극적으로 활용하여, 개발자가 코드를 작성하는 동시에 API 문서를 자동 생성할 수 있습니다. FastAPI의 주요 특징은 다음과 같습니다.

  • 고속 성능: FastAPI는 Starlette와 Pydantic을 기반으로 하여, 비동기 지원으로 매우 높은 성능을 제공합니다.
  • 자동 API 문서화: Swagger UI 및 ReDoc을 통해 API 문서를 자동으로 생성할 수 있습니다.
  • 데이터 검증: Pydantic을 사용하여 요청 데이터에 대한 검증을 손쉽게 수행할 수 있습니다.

2. FastAPI 서버 구축하기

2.1 FastAPI 설치

FastAPI와 Uvicorn(Web 서버)을 설치해보겠습니다. 아래 명령어를 통해 설치할 수 있습니다.

        
        pip install fastapi uvicorn
        
    

2.2 기본 FastAPI 애플리케이션

FastAPI 애플리케이션을 시작해보겠습니다. 아래 코드를 “main.py” 파일에 작성합니다.

        
        from fastapi import FastAPI

        app = FastAPI()

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

        if __name__ == "__main__":
            import uvicorn
            uvicorn.run(app, host="0.0.0.0", port=8000)
        
    

위 코드는 FastAPI 애플리케이션을 정의하는 기본 구조입니다. 우리는 “/” 경로로 GET 요청을 보내면 “Hello”: “World”라는 JSON 응답을 받게 됩니다.

2.3 FastAPI 실행하기

FastAPI 서버를 실행하려면 아래 명령어를 터미널에서 실행합니다.

        
        python main.py
        
    

서버가 정상적으로 실행되면 http://127.0.0.1:8000/docs에 접속하여 Swagger UI를 통해 API 문서를 확인할 수 있습니다.

3. Docker를 이용한 FastAPI 배포

3.1 Docker 설치 확인

Docker가 설치되어 있지 않다면, Docker의 공식 웹사이트에서 다운로드하여 설치합니다. 설치가 완료되면 아래 명령어를 통해 Docker가 정상적으로 설치되었는지 확인할 수 있습니다.

        
        docker --version
        
    

3.2 Dockerfile 작성하기

Dockerfile은 Docker 이미지를 생성하기 위한 스크립트입니다. 아래 내용을 기반으로 “Dockerfile”을 작성합니다.

        
        # 베이스 이미지 설정
        FROM python:3.9

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

        # requirements.txt를 컨테이너로 복사
        COPY requirements.txt .

        # 종속성 설치
        RUN pip install --no-cache-dir -r requirements.txt

        # 애플리케이션 코드 복사
        COPY ./main.py .

        # FastAPI 서버 실행
        CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
        
    

위 Dockerfile에서는 Python 3.9를 베이스 이미지로 사용하고, 작업 디렉토리를 “/app”으로 설정했습니다. 이후 requirements.txt를 통해 패키지를 설치하고, 애플리케이션 코드를 복사합니다.

3.3 requirements.txt 작성하기

FastAPI와 Uvicorn 패키지를 관리하기 위한 “requirements.txt” 파일을 생성합니다. 아래 내용을 입력합니다.

        
        fastapi
        uvicorn
        
    

3.4 Docker 이미지 빌드하기

Dockerfile과 requirements.txt가 준비되었으면, Docker 이미지를 빌드할 수 있습니다. 아래 명령어를 터미널에서 실행합니다.

        
        docker build -t fastapi-app .
        
    

3.5 Docker 컨테이너 실행하기

다음으로 Docker 컨테이너를 실행하여 FastAPI 애플리케이션을 확인합니다. 아래 명령어를 사용합니다.

        
        docker run -d --name fastapi-container -p 8000:8000 fastapi-app
        
    

이제 http://127.0.0.1:8000/docs에 접속하여 Docker 내에서 실행 중인 FastAPI 서버의 Swagger UI를 확인할 수 있습니다.

4. 결론

이번 글에서는 FastAPI를 사용하여 기본적인 웹 애플리케이션을 구축하고 Docker를 통해 이를 배포하는 방법을 소개했습니다. FastAPI는 비동기 성공을 지원하며, 효율적인 API 개발을 가능하게 합니다. Docker를 이용한 배포는 애플리케이션 환경의 일관성을 보장하며, 손쉽게 배포할 수 있게 해줍니다. FastAPI와 Docker를 이용하여 신속하게 API 서버를 개발하시길 바랍니다.

5. 참고자료

© 2023 FastAPI 블로그 포스트