docker-compose.yml•1.93 kB
services:
# PostgreSQL database for MCP server with pgvector extension
db-mcp:
image: ankane/pgvector:latest
container_name: picard_mcp-db-mcp
volumes:
- postgres_data_mcp:/var/lib/postgresql/data
env_file:
- .env
ports:
- "5433:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d picard_mcp"]
interval: 5s
timeout: 5s
retries: 5
# PostgreSQL database for Django client
db-django:
image: postgres:14
container_name: picard_mcp-db-django
volumes:
- postgres_data_django:/var/lib/postgresql/data
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=django_client
ports:
- "5434:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d django_client"]
interval: 5s
timeout: 5s
retries: 5
# MCP server
mcp_server:
build: ./mcp_server
container_name: picard_mcp-mcp_server
volumes:
- ./mcp_server:/app
- ./logs:/app/logs
ports:
- "8001:8000"
depends_on:
db-mcp:
condition: service_healthy
env_file:
- .env
environment:
- POSTGRES_HOST=db-mcp
- POSTGRES_PORT=5432
- LOG_LEVEL=INFO
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload --log-level info
# Django client
django_client:
build: ./django_client
container_name: picard_mcp-django_client
volumes:
- ./django_client:/app
ports:
- "8000:8000"
depends_on:
db-django:
condition: service_healthy
mcp_server:
condition: service_started
env_file:
- ./django_client/.env
environment:
- DB_HOST=db-django
- DB_PORT=5432
- MCP_SERVER_INTERNAL_URL=http://mcp_server:8000
command: python manage.py runserver 0.0.0.0:8000
volumes:
postgres_data_mcp:
postgres_data_django: