-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
47 lines (38 loc) · 1.88 KB
/
Copy pathDockerfile
File metadata and controls
47 lines (38 loc) · 1.88 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
# check=skip=FromPlatformFlagConstDisallowed,RedundantTargetPlatform
FROM --platform=linux/amd64 python:3.11-slim@sha256:db3ff2e1800a8581e2c48a27c3995339d47bdf046da21c7627accd3d51053a93
RUN apt-get update && \
apt-get install -y --no-install-recommends curl jq git && \
curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && \
apt-get install -y --no-install-recommends nodejs && \
rm -rf /var/lib/apt/lists/*
# Pre-install MCP servers so npx doesn't re-download on every container start.
# Pinned to exact versions/commits — bump deliberately rather than silently
# picking up upstream changes.
RUN npm install -g @playwright/mcp@0.0.78
# npm's own `github:owner/repo#<sha>` git-ref install has a race condition
# (ENOTDIR on rename) that reproduces deterministically for these packages —
# cloning + checking out the exact commit and installing from the local path
# sidesteps npm's git-committish resolution entirely while still pinning it.
RUN git clone https://github.com/patricebechard/gitlab-mcp.git /tmp/gitlab-mcp && \
cd /tmp/gitlab-mcp && git checkout 20d97bfd72c7fb49ead93a45ca613a88a0fd7298 && \
npm install -g /tmp/gitlab-mcp && \
rm -rf /tmp/gitlab-mcp
RUN git clone https://github.com/patricebechard/erpnext-mcp-server.git /tmp/erpnext-mcp && \
cd /tmp/erpnext-mcp && git checkout 1a43967e407bec515f8a25848a5fb62a289a81a4 && \
npm install -g /tmp/erpnext-mcp && \
rm -rf /tmp/erpnext-mcp
# Pre-install Playwright browsers + OS deps
RUN apt-get update && npx playwright install --with-deps chrome && rm -rf /var/lib/apt/lists/*
WORKDIR /app
ENV CHAINLIT_APP_ROOT=/app
# Install uv
RUN pip install --no-cache-dir uv
# Install package and all dependencies
COPY pyproject.toml uv.lock ./
COPY src/ src/
RUN uv sync --frozen
COPY .chainlit/ .chainlit/
COPY public/ public/
COPY chainlit.md app.py cli.py eval.py viewer.py ./
COPY tests/ tests/
EXPOSE 8080