uvicorn의 --reload 모드는 개발용이고,
실제 배포환경에서는 gunicorn + uvicorn.workers.UvicornWorker 조합으로 실행하는 것이 일반적인 방식입니다.
개발,테스용 서버 실행시
uvicorn main:app --reload --host 0.0.0.0 --port 8000
운영,배포환경에서 실행시
gunicorn main:app \
--workers 4 \
--worker-class uvicorn.workers.UvicornWorker \
--bind 0.0.0.0:8000
옵션 설명
main:app | main.py 파일의 app 객체 (FastAPI 인스턴스) |
--workers 4 | 워커 프로세스 수 (CPU 코어 수에 따라 조정) |
--worker-class uvicorn.workers.UvicornWorker | ASGI 앱을 실행하는 Uvicorn 워커 사용 |
--bind 0.0.0.0:8000 | 외부에서 접근 가능하도록 바인딩 |
사전준비
pip install gunicorn uvicorn
도커로 배포하는법
프로젝트 폴더 루트에 아래 파일들 생성
Dockerfile 생성
FROM python:3.11-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r requirements.txt
CMD ["gunicorn", "main:app", "--worker-class", "uvicorn.workers.UvicornWorker", "--bind", "0.0.0.0:8000"]
docker-compose.yml
version: '3.8'
services:
fastapi:
build: .
container_name: fastapi_app
ports:
- "8000:8000"
restart: always
실행
docker compose up -d --build
반응형
'웹 개발 > 🐍 Python' 카테고리의 다른 글
리스트 컴프리헨션(list comprehension) (1) | 2025.06.30 |
---|---|
파이썬 .env 사용법 (0) | 2025.05.16 |
파이썬 가상환경 경로변경시 activate 안되는 문제 (0) | 2025.05.14 |
스케줄러에 파이썬파일 등록하는법 (0) | 2024.03.15 |
여러 모듈이 있는 python 실행파일만들기 (0) | 2024.01.31 |