이 문서는 FastAPI 서버를 MySQL, Redis와 함께 Docker로 실행하고, Python 3.12.10 로컬 개발환경에서도 동일하게 사용할 수 있도록 구성하는 방법을 안내합니다.
🧱 아키텍처 구성
┌─────────────────────────────┐
│ Cursor / VSCode / Client │
│ (LLM Agent) │
└──────────────┬──────────────┘
│ MCP (HTTP)
▼
┌─────────────────────────────┐
│ MCP Server (FastMCP) │
│ FastAPI + MCP SDK │
│ │
│ ├── Tool Registry │
│ ├── LLM Tool │
│ └── DB Tool (optional) │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Ollama Server │
│ (LLM Runtime, Docker) │
└─────────────────────────────┘
LLM(Client)은 MCP HTTP API만 호출
FastAPI는 Tool Router + 비즈니스 로직 분리
Redis는 캐시, MySQL은 영속 데이터 저장소 역할
🧱 전체 디렉토리 구조
mcp-llm-stack/
│
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
│
└── app/
├── main.py # FastMCP 엔트리
│
├── mcp/
│ ├── __init__.py
│ └── tools.py # MCP Tools (LLM 호출)
│
└── llm/
└── ollama_client.py # Ollama 호출 로직
📌 VS Code 디버그 세팅
다음 파일들은 디버그 모드 전용입니다.
Dockerfile_debugdocker-compose.yml_debug
👉 VS Code에서 FastAPI + Docker + breakpoints 디버깅 가능
📌 1. 실행 방법
⚠ Windows 환경에서는 Docker Desktop이 실행 중이어야 합니다.
🐳 Docker Compose 실행
docker-compose up --build
🚀 백그라운드(데몬) 실행
docker-compose up --build -d
🛑 컨테이너 종료
docker-compose down
📌 Docker 캐시 제거 (빌드 오류 시)
docker build --no-cache -t myfastapi .
📌 Docker 캐시 충돌 오류 해결
캐시 충돌로 인해 빌드 오류가 발생할 경우 아래 명령어로 해결할 수 있습니다.
docker system prune -a
⚠ 실행 시 모든 미사용 Docker 이미지/컨테이너가 제거됩니다.