85 lines
3.1 KiB
Docker
85 lines
3.1 KiB
Docker
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"]
|