FROM python:3.12-slim-bookworm ARG UID=1000 ARG GID=1000 ARG BUILD_HTTP_PROXY="" ARG BUILD_HTTPS_PROXY="" ARG BUILD_ALL_PROXY="" ARG BUILD_APT_MIRROR="" COPY --from=ghcr.io/astral-sh/uv:0.8.4 /uv /uvx /bin/ ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ UV_PROJECT_ENVIRONMENT=/opt/venv \ UV_DYNAMIC_VERSIONING_BYPASS=0.22.1 \ BASIC_MEMORY_HOME=/data/basic-memory/memories \ BASIC_MEMORY_CONFIG_DIR=/data/basic-memory/config \ BASIC_MEMORY_PROJECT_ROOT=/data/basic-memory/memories \ BASIC_MEMORY_SEMANTIC_SEARCH_ENABLED=true \ BASIC_MEMORY_SEMANTIC_EMBEDDING_PROVIDER=fastembed \ BASIC_MEMORY_SEMANTIC_EMBEDDING_MODEL=sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 \ BASIC_MEMORY_SEMANTIC_EMBEDDING_CACHE_DIR=/data/basic-memory/cache \ BASIC_MEMORY_AUTO_UPDATE=false \ HTTP_PROXY="" \ HTTPS_PROXY="" \ ALL_PROXY="" \ http_proxy="" \ https_proxy="" \ all_proxy="" \ PATH=/opt/venv/bin:$PATH WORKDIR /app COPY third_party/basic-memory/pyproject.toml third_party/basic-memory/uv.lock ./ COPY third_party/basic-memory/src ./src COPY third_party/basic-memory/README.md ./ RUN HTTP_PROXY="$BUILD_HTTP_PROXY" \ HTTPS_PROXY="$BUILD_HTTPS_PROXY" \ ALL_PROXY="$BUILD_ALL_PROXY" \ http_proxy="$BUILD_HTTP_PROXY" \ https_proxy="$BUILD_HTTPS_PROXY" \ all_proxy="$BUILD_ALL_PROXY" \ uv sync --locked --no-dev --python /usr/local/bin/python COPY scripts/preload_basic_memory_model.py /usr/local/lib/memrelay/preload_basic_memory_model.py RUN HTTP_PROXY="$BUILD_HTTP_PROXY" \ HTTPS_PROXY="$BUILD_HTTPS_PROXY" \ ALL_PROXY="$BUILD_ALL_PROXY" \ http_proxy="$BUILD_HTTP_PROXY" \ https_proxy="$BUILD_HTTPS_PROXY" \ all_proxy="$BUILD_ALL_PROXY" \ python /usr/local/lib/memrelay/preload_basic_memory_model.py \ --cache-dir /opt/basic-memory-model \ --threads 2 COPY deploy/basic-memory/entrypoint.sh /usr/local/bin/basic-memory-entrypoint RUN HTTP_PROXY="$BUILD_HTTP_PROXY" \ HTTPS_PROXY="$BUILD_HTTPS_PROXY" \ ALL_PROXY="$BUILD_ALL_PROXY" \ http_proxy="$BUILD_HTTP_PROXY" \ https_proxy="$BUILD_HTTPS_PROXY" \ all_proxy="$BUILD_ALL_PROXY" \ sh -c 'if [ -n "$BUILD_APT_MIRROR" ]; then sed -i "s|http://deb.debian.org|${BUILD_APT_MIRROR%/}|g" /etc/apt/sources.list.d/debian.sources; fi' \ && \ groupadd --gid "$GID" appgroup \ && useradd --uid "$UID" --gid "$GID" --create-home --shell /usr/sbin/nologin appuser \ && apt-get update \ && apt-get install --yes --no-install-recommends gosu \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /data/basic-memory /opt/basic-memory-model \ && chmod +x /usr/local/bin/basic-memory-entrypoint \ && chown -R appuser:appgroup /data/basic-memory /opt/basic-memory-model USER root EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD python -c "import socket; socket.create_connection(('127.0.0.1', 8000), 5).close()" || exit 1 ENTRYPOINT ["basic-memory-entrypoint"] CMD ["basic-memory", "mcp", "--transport", "streamable-http", "--host", "0.0.0.0", "--port", "8000", "--path", "/mcp"]