docker-compose.yml•2.38 kB
version: '3.8'
services:
# PostgreSQL database for IR server
postgres:
build:
context: ./postgres_setup
container_name: ir_postgres
environment:
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- POSTGRES_DB=${POSTGRES_DB:-mcp_ir}
volumes:
- postgres_data:/var/lib/postgresql/data
- ./postgres_setup:/docker-entrypoint-initdb.d
ports:
- "${POSTGRES_PORT:-5432}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
restart: unless-stopped
networks:
- mcp_network
# IR Server (PostgreSQL-based MCP server for information retrieval)
ir_server:
build:
context: ./
dockerfile: ir/Dockerfile
container_name: ir_server
environment:
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- POSTGRES_USER=${POSTGRES_USER:-postgres}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
- POSTGRES_DB=${POSTGRES_DB:-mcp_ir}
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
- ./ir:/app/ir
- ./.env:/app/.env
depends_on:
postgres:
condition: service_healthy
ports:
- "8090:8090"
restart: unless-stopped
networks:
- mcp_network
# Teams MCP Server
teams_mcp_server:
build:
context: ./
dockerfile: mcp_server/Dockerfile
container_name: teams_mcp_server
environment:
- AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
- AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
- AZURE_TENANT_ID=${AZURE_TENANT_ID}
- AZURE_APP_OBJECT_ID=${AZURE_APP_OBJECT_ID}
- DUCKDB_PATH=${DUCKDB_PATH:-db/teams_mcp.duckdb}
- TOKEN_PATH=${TOKEN_PATH:-db/token_cache.json}
- POLL_INTERVAL=${POLL_INTERVAL:-10}
- DEMO_MODE=${DEMO_MODE:-false}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- IR_SERVER_HOST=ir_server
- IR_SERVER_PORT=8090
volumes:
- ./mcp_server:/app/mcp_server
- ./teams:/app/teams
- ./config.py:/app/config.py
- ./db:/app/db
- ./.env:/app/.env
depends_on:
ir_server:
condition: service_started
ports:
- "${TEAMS_SERVER_PORT:-8000}:8000"
restart: unless-stopped
networks:
- mcp_network
networks:
mcp_network:
driver: bridge
volumes:
postgres_data: