-
-
Notifications
You must be signed in to change notification settings - Fork 344
Expand file tree
/
Copy pathDockerfile
More file actions
51 lines (38 loc) · 1.68 KB
/
Dockerfile
File metadata and controls
51 lines (38 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
FROM ghcr.io/astral-sh/uv:0.10@sha256:edd1fd89f3e5b005814cc8f777610445d7b7e3ed05361f9ddfae67bebfe8456a AS uv
FROM python:3.12-slim@sha256:f3fa41d74a768c2fce8016b98c191ae8c1bacd8f1152870a3f9f87d350920b7c AS builder
COPY --from=uv /uv /uvx /bin/
RUN apt-get update && \
apt-get install -y --no-install-recommends \
cmake build-essential libssl-dev zlib1g-dev libzstd-dev && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev --extra treesitter-full --no-install-project --no-binary-package pymgclient
COPY . .
RUN uv sync --frozen --no-dev --extra treesitter-full --no-binary-package pymgclient
FROM python:3.12-slim@sha256:f3fa41d74a768c2fce8016b98c191ae8c1bacd8f1152870a3f9f87d350920b7c
RUN apt-get update && \
apt-get install -y --no-install-recommends ripgrep libssl3 zlib1g libzstd1 && \
rm -rf /var/lib/apt/lists/*
RUN useradd --create-home appuser
USER appuser
WORKDIR /app
COPY --from=builder --chown=appuser:appuser /app/.venv /app/.venv
COPY --from=builder --chown=appuser:appuser /app/codebase_rag /app/codebase_rag
COPY --from=builder --chown=appuser:appuser /app/codec /app/codec
COPY --from=builder --chown=appuser:appuser /app/cgr /app/cgr
COPY --from=builder --chown=appuser:appuser /app/pyproject.toml /app/pyproject.toml
ENV PATH="/app/.venv/bin:$PATH"
COPY --chmod=755 <<'EOF' /app/entrypoint.sh
#!/bin/sh
ARCH=$(uname -m)
case "$ARCH" in
x86_64) LIBDIR="/lib/x86_64-linux-gnu" ;;
aarch64) LIBDIR="/lib/aarch64-linux-gnu" ;;
*) LIBDIR="/lib" ;;
esac
export LD_PRELOAD="$LIBDIR/libz.so.1:$LIBDIR/libzstd.so.1"
exec code-graph-rag "$@"
EOF
ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["mcp-server"]