refactor: Unified standalone image with both Neo4j and FalkorDB drivers

- Modified Dockerfile.standalone to install both neo4j and falkordb extras
- Both compose files now use the same standalone image
- Config file determines which database to connect to at runtime
- Added build-standalone.sh script for building and pushing to DockerHub
- Image tags: standalone, {version}-standalone, {version}-graphiti-{core}-standalone
This commit is contained in:
Daniel Chalef 2025-10-30 21:58:57 -07:00
parent eafa3e4d9e
commit 7dfab2022f
4 changed files with 54 additions and 13 deletions

View file

@ -29,19 +29,14 @@ WORKDIR /app/mcp
# Accept graphiti-core version as build argument
ARG GRAPHITI_CORE_VERSION=0.22.0
ARG DATABASE_PROVIDER=neo4j
# Copy project files for dependency installation
COPY pyproject.toml uv.lock ./
# Remove the local path override for graphiti-core in Docker builds
# Install with appropriate database extra
# Install with BOTH neo4j and falkordb extras for maximum flexibility
RUN sed -i '/\[tool\.uv\.sources\]/,/graphiti-core/d' pyproject.toml && \
if [ "${DATABASE_PROVIDER}" = "neo4j" ]; then \
sed -i "s/graphiti-core\[falkordb\]>=0\.16\.0/graphiti-core[neo4j]==${GRAPHITI_CORE_VERSION}/" pyproject.toml; \
else \
sed -i "s/graphiti-core\[falkordb\]>=0\.16\.0/graphiti-core[falkordb]==${GRAPHITI_CORE_VERSION}/" pyproject.toml; \
fi
sed -i "s/graphiti-core\[falkordb\]>=0\.16\.0/graphiti-core[neo4j,falkordb]==${GRAPHITI_CORE_VERSION}/" pyproject.toml
# Install Python dependencies
RUN --mount=type=cache,target=/root/.cache/uv \

View file

@ -0,0 +1,50 @@
#!/bin/bash
# Script to build and push standalone Docker image with both Neo4j and FalkorDB drivers
# This script queries PyPI for the latest graphiti-core version and includes it in the image tag
set -e
# Get MCP server version from pyproject.toml
MCP_VERSION=$(grep '^version = ' ../pyproject.toml | sed 's/version = "\(.*\)"/\1/')
# Get latest graphiti-core version from PyPI
echo "Querying PyPI for latest graphiti-core version..."
GRAPHITI_CORE_VERSION=$(curl -s https://pypi.org/pypi/graphiti-core/json | python3 -c "import sys, json; print(json.load(sys.stdin)['info']['version'])")
echo "Latest graphiti-core version: ${GRAPHITI_CORE_VERSION}"
# Get build metadata
BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
VCS_REF=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
# Build the standalone image with explicit graphiti-core version
echo "Building standalone Docker image..."
docker build \
--build-arg MCP_SERVER_VERSION="${MCP_VERSION}" \
--build-arg GRAPHITI_CORE_VERSION="${GRAPHITI_CORE_VERSION}" \
--build-arg BUILD_DATE="${BUILD_DATE}" \
--build-arg VCS_REF="${VCS_REF}" \
-f Dockerfile.standalone \
-t "zepai/knowledge-graph-mcp:standalone" \
-t "zepai/knowledge-graph-mcp:${MCP_VERSION}-standalone" \
-t "zepai/knowledge-graph-mcp:${MCP_VERSION}-graphiti-${GRAPHITI_CORE_VERSION}-standalone" \
..
echo ""
echo "Build complete!"
echo " MCP Server Version: ${MCP_VERSION}"
echo " Graphiti Core Version: ${GRAPHITI_CORE_VERSION}"
echo " Build Date: ${BUILD_DATE}"
echo " VCS Ref: ${VCS_REF}"
echo ""
echo "Image tags:"
echo " - zepai/knowledge-graph-mcp:standalone"
echo " - zepai/knowledge-graph-mcp:${MCP_VERSION}-standalone"
echo " - zepai/knowledge-graph-mcp:${MCP_VERSION}-graphiti-${GRAPHITI_CORE_VERSION}-standalone"
echo ""
echo "To push to DockerHub:"
echo " docker push zepai/knowledge-graph-mcp:standalone"
echo " docker push zepai/knowledge-graph-mcp:${MCP_VERSION}-standalone"
echo " docker push zepai/knowledge-graph-mcp:${MCP_VERSION}-graphiti-${GRAPHITI_CORE_VERSION}-standalone"
echo ""
echo "Or push all tags:"
echo " docker push --all-tags zepai/knowledge-graph-mcp"

View file

@ -16,12 +16,10 @@ services:
start_period: 10s
graphiti-mcp:
image: zepai/knowledge-graph-mcp:standalone-falkordb
image: zepai/knowledge-graph-mcp:standalone
build:
context: ..
dockerfile: docker/Dockerfile.standalone
args:
DATABASE_PROVIDER: falkordb
env_file:
- path: ../.env
required: false

View file

@ -20,12 +20,10 @@ services:
start_period: 30s
graphiti-mcp:
image: zepai/knowledge-graph-mcp:standalone-neo4j
image: zepai/knowledge-graph-mcp:standalone
build:
context: ..
dockerfile: docker/Dockerfile.standalone
args:
DATABASE_PROVIDER: neo4j
env_file:
- path: ../.env
required: false