version: '3.8' services: postgres: image: postgres:15 container_name: enterprise-postgres environment: POSTGRES_DB: enterprise POSTGRES_USER: admin POSTGRES_PASSWORD: password ports: - "5432:5432" volumes: - ./data/sample_data.sql:/docker-entrypoint-initdb.d/init.sql - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U admin"] interval: 10s timeout: 5s retries: 5 blazegraph: image: lyrasis/blazegraph:2.1.5 container_name: enterprise-blazegraph ports: - "9999:8080" volumes: - blazegraph-data:/var/lib/blazegraph healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/bigdata/status"] interval: 10s timeout: 5s retries: 5 mcp-server: build: context: . dockerfile: Dockerfile container_name: enterprise-mcp-server depends_on: postgres: condition: service_healthy blazegraph: condition: service_healthy ports: - "8000:8000" environment: DATABASE_URL: postgresql://admin:password@postgres:5432/enterprise ONTOLOGY_ENDPOINT: http://blazegraph:8080/bigdata/sparql MCP_SERVER_PORT: 8000 MCP_SERVER_HOST: 0.0.0.0 LOG_LEVEL: INFO volumes: - ./ontologies:/app/ontologies - ./src:/app/src command: uvicorn src.mcp.ontology_server:app --host 0.0.0.0 --port 8000 volumes: postgres-data: blazegraph-data: