docker-compose.yml•1.95 kB
services:
db:
image: pgvector/pgvector:pg17
environment:
POSTGRES_DB: ${POSTGRES_DB:-mcp}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
ports:
- "5432:5432"
volumes:
- postgres_data_dev:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "${PORT:-8000}:8000"
env_file:
- .env
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/${POSTGRES_DB:-mcp}
- DEVELOPMENT=true
volumes:
# Mount source code for live reload
- ./src:/app/src
- ./dev.py:/app/dev.py
# Mount config directory for deployment configuration
- ./config:/app/config
# Mount pyproject.toml for dependency changes
- ./pyproject.toml:/app/pyproject.toml
depends_on:
db:
condition: service_healthy
restart: unless-stopped
# Enable TTY for better logging output
tty: true
stdin_open: true
frontend:
build:
context: ./frontend
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
environment:
# Set backend URL for MCP endpoints in development
- VITE_BACKEND_URL=http://localhost:8000
volumes:
# Mount source code for live reload
- ./frontend:/app
# Exclude node_modules from mount (use container's version)
- /app/node_modules
depends_on:
- backend
restart: unless-stopped
# Enable TTY for better logging output
tty: true
stdin_open: true
adminer:
image: adminer:4
ports:
- "8080:8080"
environment:
- ADMINER_DEFAULT_SERVER=db
depends_on:
- db
restart: unless-stopped
volumes:
postgres_data_dev: