FastAPI

FastAPI 강좌 6강: 도커를 사용한 FastAPI 애플리케이션 컨테이너화

atomicdev 2024. 10. 9. 10:37
728x90

도커를 사용한 FastAPI 애플리케이션 컨테이너화


강의 목표:

  • Docker를 사용하여 FastAPI 애플리케이션을 컨테이너화하는 방법을 학습한다.
  • Dockerfile을 작성하고, 컨테이너 이미지를 생성 및 실행해 FastAPI 애플리케이션을 배포할 수 있다.
    Docker를 사용해 FastAPI 애플리케이션을 컨테이너화하는 과정

 


강의 세부 내용:

1. Docker와 컨테이너 개념

  • Docker란?: 애플리케이션과 그 의존성을 함께 패키징하여 일관된 실행 환경을 제공하는 컨테이너 기술.
  • 컨테이너: 운영체제 레벨에서 격리된 환경에서 애플리케이션을 실행할 수 있도록 해주는 가상화 기술.
  • Docker를 사용하면 FastAPI 애플리케이션을 개발 환경과 동일하게 실행할 수 있으며, 일관된 환경에서 배포 및 스케일링이 가능합니다.

2. Docker로 FastAPI 애플리케이션 컨테이너화

예제 1: Dockerfile 작성

FastAPI 애플리케이션을 Docker 이미지로 만들기 위해 Dockerfile을 작성합니다.

  1. 프로젝트 구조:
    my_fastapi_app/
    ├── main.py
    ├── requirements.txt
    └── Dockerfile
  2. main.py: FastAPI 애플리케이션의 기본 코드를 작성합니다.
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/")
    async def read_root():
        return {"message": "Hello, Docker!"}
  3. requirements.txt: FastAPI와 Uvicorn을 포함한 의존성을 정의합니다.
    fastapi
    uvicorn
     
     
  4. Dockerfile: Docker 이미지를 빌드하기 위한 Dockerfile을 작성합니다.
    # Python 3.9 이미지를 기반으로 설정
    FROM python:3.9
    
    # 작업 디렉터리 생성
    WORKDIR /app
    
    # 필요한 파일들을 컨테이너에 복사
    COPY requirements.txt .
    
    # 의존성 설치
    RUN pip install --no-cache-dir -r requirements.txt
    
    # 애플리케이션 파일 복사
    COPY . .
    
    # Uvicorn을 사용하여 FastAPI 애플리케이션 실행
    CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

3. Docker 이미지 생성 및 실행

  1. Docker 이미지 빌드: Dockerfile이 있는 디렉토리에서 다음 명령어를 사용하여 이미지를 생성합니다.
    • -t my_fastapi_app: 이미지를 my_fastapi_app이라는 이름으로 태그합니다.
    • .: 현재 디렉토리에 있는 Dockerfile을 사용하여 이미지를 빌드합니다.
      docker build -t my_fastapi_app .
  2. Docker 컨테이너 실행: 빌드한 Docker 이미지를 사용해 컨테이너를 실행합니다.
    docker run -d -p 8000:8000 my_fastapi_app
    • -d: 컨테이너를 백그라운드에서 실행합니다.
    • -p 8000:8000: 로컬 호스트의 8000 포트와 컨테이너의 8000 포트를 연결합니다.
  3. FastAPI 애플리케이션 접속: 브라우저에서 http://localhost:8000으로 접속하여 FastAPI 애플리케이션이 정상적으로 동작하는지 확인합니다.
    docker run -d -p 8000:8000 my_fastapi_app
     
    결과:
    {
        "message": "Hello, Docker!"
    }

 

 

 

 


4. Docker 컨테이너 관리

  • 실행 중인 컨테이너 확인:
    docker ps
    
  • 컨테이너 중지:
    docker stop <컨테이너 ID>
  • 컨테이너 제거:
    docker rm <컨테이너 ID>
  • 이미지 목록 확인:
    docker images

 

 

 

 


5. Docker Compose로 여러 서비스 관리

예제 2: Docker Compose 파일 작성

Docker Compose를 사용하면 여러 서비스를 함께 실행할 수 있습니다. 예를 들어, 데이터베이스와 함께 FastAPI 애플리케이션을 실행할 수 있습니다.

  1. docker-compose.yml 파일 작성:
    version: '3'
    services:
      web:
        build: .
        ports:
          - "8000:8000"
        depends_on:
          - db
      db:
        image: postgres
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
          POSTGRES_DB: mydatabase
  2. Compose로 애플리케이션 실행:
    docker-compose up --build
    • FastAPI 애플리케이션과 PostgreSQL 데이터베이스를 함께 실행합니다.

마무리 및 추가 학습

  • 이번 강의에서는 Docker를 사용해 FastAPI 애플리케이션을 컨테이너화하고, 이를 실행하는 방법을 학습했습니다.
  • Docker Compose를 통해 여러 서비스를 쉽게 관리하는 방법도 살펴봤습니다.
  • 다음 강의에서는 Kubernetes를 활용한 배포 과정을 다룹니다.
728x90