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의 조합은 빠르게 확장 가능한 웹 애플리케이션을 개발하기에 매우 유용합니다.
참고 자료:
- FastAPI 공식문서: https://fastapi.tiangolo.com/
- Docker 공식문서: https://docs.docker.com/