fastapi 도커 인증 및 보안 패키지 requirements.txt 파이썬 웹프레임

FastAPI와 MariaDB와의 통신을 위한 패키지들과 Android와의 통신을 위한 의존성 목록입니다. 이 목록은 requirements.txt에 포함할 수 있는 패키지들로, FastAPI와 SQLAlchemy, 그리고 MariaDB와 연동하고 JSON 형태로 데이터를 주고받는 구조에 필요한 것들을 나열합니다.

최종 requirements.txt에 추가할 유용한 패키지들

# 기존 필수 패키지들 (FastAPI, SQLAlchemy, 인증 등)
fastapi==0.100.0
uvicorn[standard]==0.22.0
SQLAlchemy==2.0.21
asyncmy==0.2.7
alembic==1.11.1
pydantic==2.4.0
fastapi-cors==0.3.1
python-multipart==0.0.6
requests==2.31.0
python-dotenv==1.0.0
httpx==0.24.1
pytest==7.4.0
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
authlib==1.2.0
pyjwt==2.8.0
cryptography==41.0.1

# 성능 최적화를 위한 추가 패키지
gunicorn==21.2.0  # FastAPI의 프로덕션 서버용 WSGI 서버
aiomysql==0.1.1  # MySQL/MariaDB를 위한 추가 비동기 드라이버
redis==5.0.10  # 캐시와 세션 관리

# 데이터 분석 및 로깅
loguru==0.6.0  # 로깅 편리성 개선
prometheus-client==0.16.0  # 모니터링을 위한 메트릭 수집

# WebSocket 및 실시간 데이터 지원
fastapi-socketio==0.1.3  # 실시간 데이터 송수신을 위한 WebSocket 지원

# API 문서화 및 개발 편의성 도구
openapi-schema-pydantic==2.2.2  # OpenAPI 스키마를 위한 도구
sentry-sdk==1.29.2  # 오류 추적 및 모니터링 도구

추가한 패키지의 설명 및 이유:

  1. Gunicorn:
  • 프로덕션 환경에서는 Uvicorn 단독 사용보다 Gunicorn을 통해 FastAPI를 더 효율적으로 실행합니다. 이를 통해 여러 워커 프로세스로 요청을 분산 처리합니다【11†source】.
  1. Redis:
  • Redis를 사용하면 세션 관리캐시를 최적화할 수 있어 빠른 응답과 실시간 데이터 동기화가 가능합니다【12†source】.
  1. Loguru:
  • Loguru를 활용해 직관적인 로깅을 구현하면 서버에서 발생하는 오류나 이벤트를 더 쉽게 추적할 수 있습니다【13†source】.
  1. FastAPI-SocketIO:
  • Jetpack Compose 기반 앱에서 실시간 데이터가 필요하다면 WebSocket을 통해 구현할 수 있습니다. 이를 위해 fastapi-socketio를 추가했습니다【10†source】【12†source】.
  1. Prometheus-Client:
  • 서버 성능 모니터링을 위해 Prometheus와 통합하여 메트릭을 수집하고 시각화할 수 있습니다【14†source】.
  1. Sentry SDK:
  • Sentry를 통해 오류를 추적하고, 빠르게 해결할 수 있습니다. 이는 프로덕션 환경에서 특히 유용합니다.

이와 같은 구성을 사용하면 FastAPI 서버는 성능 최적화, 보안 강화, 실시간 통신 지원까지 모두 충족할 수 있습니다. Jetpack Compose 앱과 FastAPI 서버 간의 통신은 주로 JWT 인증을 활용한 RESTful API와 필요 시 WebSocket을 통해 처리하는 것이 이상적입니다.

추가적으로, 이 패키지들은 모두 Docker 이미지로 쉽게 관리할 수 있습니다. docker-compose.yml 파일에 Redis와 함께 Gunicorn 서버를 정의하면 앱의 확장성과 성능을 극대화할 수 있습니다.

제공된 requirements.txt 파일만으로도 필요한 모든 패키지를 설치할 수 있지만, 도커 이미지 빌드를 위해 몇 가지 추가 파일이 필요합니다. 아래는 완전한 도커 환경 구성을 위한 필수 파일 목록과 예시입니다.


1. Dockerfile

이 파일은 도커 이미지 생성 시 필요한 지침을 제공합니다.

# Python Slim 이미지 사용으로 경량화
FROM python:3.9-slim

# 작업 디렉토리 설정
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"]

2. .dockerignore

불필요한 파일이 도커 이미지에 포함되지 않도록 방지합니다.

__pycache__/
*.pyc
*.pyo
env/

3. docker-compose.yml (선택사항)

여러 서비스(MariaDB, Redis 등)와 함께 사용할 경우 Docker Compose 파일을 작성합니다.

version: '3.8'
services:
  app:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    depends_on:
      - db

  db:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydb
    ports:
      - "3306:3306"

4. FastAPI 애플리케이션 코드 (main.py)

이 파일은 간단한 FastAPI 서버를 정의합니다.

from fastapi import FastAPI

app = FastAPI()

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

빌드 및 실행 명령어

  1. 도커 이미지 빌드:
   docker build -t my-fastapi-app .
  1. 도커 컨테이너 실행:
   docker run -d --name fastapi-app -p 8000:8000 my-fastapi-app
  1. Docker Compose로 실행 (선택):
   docker-compose up --build

결론

위의 Dockerfile과 필요한 파일들만 추가하면 requirements.txt와 함께 완전한 도커 환경에서 FastAPI 서버를 빌드하고 실행할 수 있습니다. 제공된 설정은 간단한 API 서버를 실행하는 데 충분하며, Docker Compose를 사용하면 데이터베이스와 연동된 서비스도 쉽게 구성할 수 있습니다【12†source】【14†source】【45†source】.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top