graphiti/mcp_server/docker/docker-compose-neo4j.yml
Daniel Chalef 9cc04e61c9
Fix MCP server release workflow to build all Dockerfile variants (#1037)
* conductor-checkpoint-start

* conductor-checkpoint-msg_0121yRVkMGS2UzMazKiZkgi4

* conductor-checkpoint-msg_01NvLs9EFt8qNiQqtYY8V9WV

* conductor-checkpoint-msg_013iKczSUmjtzPEdcgciXJUd

* conductor-checkpoint-msg_01BFgirbgmehsEGCMWjgSsnv

* conductor-checkpoint-msg_01TA4DYecHTJ36ndBsU9ooyf

* Fix critical issues in MCP release workflow

Address all critical review comments:

1. Fix malformed Docker tags
   - Change tag suffixes from colons to hyphens
   - standalone: 1.0.0-standalone (not 1.0.0:standalone)
   - combined: 1.0.0 and latest (not :latest)

2. Add checkout ref for manual triggers
   - Use inputs.tag for workflow_dispatch events
   - Ensures manual builds use correct tag ref

3. Add tag input validation
   - Validate tag format (mcp-vX.Y.Z) before processing
   - Provide clear error messages for invalid input

4. Fix release summary overwriting
   - Both matrix jobs now append to summary correctly
   - Each variant creates distinct summary section

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* conductor-checkpoint-msg_01H4GqBSkLiPgUfHGD57nq5V

* conductor-checkpoint-msg_01T2zdZLAZpVSip6EaiYa66k

* Address code review findings - fix critical checkout ref bug

Fix all critical and high-priority issues from code review:

1. Fix checkout ref logic (CRITICAL)
   - Simplified to: ref: ${{ inputs.tag || github.ref }}
   - Works correctly for both workflow_dispatch and push events
   - Removes conditional logic that would fail for manual triggers

2. Consolidate tag validation
   - Remove duplicate validation logic
   - Single validation path for both trigger types
   - Clearer error messages with received value

3. Add PyPI error handling
   - Use curl -sf for proper error codes
   - Validate GRAPHITI_VERSION is not empty
   - Exit with clear error if PyPI fetch fails

4. Improve docker-compose comments
   - Add concrete version tag examples
   - Show users how to pin specific versions
   - Clarify when local build vs registry pull is used

5. Update workflow_dispatch description
   - Clarify tag must already exist in repo
   - Prevent user confusion about tag creation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* conductor-checkpoint-msg_01KgG6FyiqNNdc51BCehNBjm

* Fix error handling bug in PyPI version fetch

The previous error handling was broken due to set -e causing
immediate exit, making the $? check unreachable.

Changes:
- Use set -eo pipefail for proper pipeline error handling
- Check command success with if ! command; then pattern
- Separate check for empty version string
- Both checks now properly reachable and functional

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-30 23:47:19 -07:00

55 lines
1.7 KiB
YAML

services:
neo4j:
image: neo4j:5.26.0
ports:
- "7474:7474" # HTTP
- "7687:7687" # Bolt
environment:
- NEO4J_AUTH=${NEO4J_USER:-neo4j}/${NEO4J_PASSWORD:-demodemo}
- NEO4J_server_memory_heap_initial__size=512m
- NEO4J_server_memory_heap_max__size=1G
- NEO4J_server_memory_pagecache_size=512m
volumes:
- neo4j_data:/data
- neo4j_logs:/logs
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "http://localhost:7474"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
graphiti-mcp:
image: zepai/knowledge-graph-mcp:standalone
# For specific versions, replace 'standalone' with a version tag:
# image: zepai/knowledge-graph-mcp:1.0.0-standalone
# When building locally, the build section below will be used.
build:
context: ..
dockerfile: docker/Dockerfile.standalone
env_file:
- path: ../.env
required: false
depends_on:
neo4j:
condition: service_healthy
environment:
# Database configuration
- NEO4J_URI=${NEO4J_URI:-bolt://neo4j:7687}
- NEO4J_USER=${NEO4J_USER:-neo4j}
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-demodemo}
- NEO4J_DATABASE=${NEO4J_DATABASE:-neo4j}
# Application configuration
- GRAPHITI_GROUP_ID=${GRAPHITI_GROUP_ID:-main}
- SEMAPHORE_LIMIT=${SEMAPHORE_LIMIT:-10}
- CONFIG_PATH=/app/mcp/config/config.yaml
- PATH=/root/.local/bin:${PATH}
volumes:
- ../config/config-docker-neo4j.yaml:/app/mcp/config/config.yaml:ro
ports:
- "8000:8000" # Expose the MCP server via HTTP transport
command: ["uv", "run", "main.py"]
volumes:
neo4j_data:
neo4j_logs: