FROM python:3.11-slim-bookworm

# Use USTC Debian mirror for faster downloads in China
RUN sed -i 's|deb.debian.org|mirrors.ustc.edu.cn|g' /etc/apt/sources.list.d/debian.sources 2>/dev/null; \
    sed -i 's|deb.debian.org|mirrors.ustc.edu.cn|g' /etc/apt/sources.list 2>/dev/null; \
    true

RUN apt-get update && \
    apt-get install -y --no-install-recommends libpq-dev curl && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir \
    -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \
    --timeout 120 \
    flask gunicorn openai psycopg2-binary pyagfs rich requests apscheduler httpx pyyaml jinja2 \
    json-repair "volcengine-python-sdk[ark]"

# Copy oGMemory source
COPY core/       /opt/ogmem/core/
COPY retrieval/  /opt/ogmem/retrieval/
COPY extraction/ /opt/ogmem/extraction/
COPY commit/     /opt/ogmem/commit/
COPY index/      /opt/ogmem/index/
COPY providers/  /opt/ogmem/providers/
COPY service/    /opt/ogmem/service/
COPY fs/         /opt/ogmem/fs/
COPY server/     /opt/ogmem/server/
COPY session/    /opt/ogmem/session/
COPY scripts/    /opt/ogmem/scripts/
# lifecycle/ removed — not present in this workspace
COPY perf/       /opt/ogmem/perf/

# Copy AGFS binary and config
COPY agfs/agfs-server          /opt/agfs/agfs-server
COPY config/agfs/config.reference.yaml /opt/agfs/config.yaml

# Copy entrypoint
COPY docker/entrypoint-standalone.sh /opt/entrypoint.sh
RUN chmod 755 /opt/entrypoint.sh /opt/agfs/agfs-server

# Copy default config (user can override via volume mount)
COPY deploy/ogmemory.example.yaml /etc/ogmem/config.yaml

# Create data directory
RUN mkdir -p /data/agfs && useradd -m ogmem && chown -R ogmem:ogmem /data/agfs /opt/agfs /opt/ogmem /etc/ogmem
RUN chmod -R 755 /opt/agfs /opt/ogmem

# Environment defaults (kept for backward compat; YAML config takes priority)
ENV PYTHONPATH=/opt/ogmem
ENV OGMEM_CONFIG=/etc/ogmem/config.yaml
ENV AGFS_BASE_URL=http://127.0.0.1:1833
ENV AGFS_MOUNT_PREFIX=/local/plugin
ENV CONTEXTENGINE_PROVIDER=openai
ENV VECTOR_DB_TYPE=opengauss
ENV INDEX_INTERVAL=15
ENV OG_ACCOUNT_ID=acct-demo
ENV OGMEM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
ENV OGMEM_EMBEDDING_MODEL=text-embedding-v2
ENV OGMEM_HTTP_PORT=8090

USER ogmem
EXPOSE 8090

ENTRYPOINT ["/opt/entrypoint.sh"]