Skip to content

Commit 8bd4dfc

Browse files
committed
Dockerfile updated to remove high critical CVE and use same base images as KAgent
Signed-off-by: Dmytro Rashko <dmitriy.rashko@amdocs.com>
1 parent 315b576 commit 8bd4dfc

1 file changed

Lines changed: 68 additions & 12 deletions

File tree

mcp/Dockerfile

Lines changed: 68 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,70 @@
1-
FROM node:20-slim AS base
2-
3-
# Copy project files
4-
COPY package.json /usr/src/app/
5-
COPY package-lock.json /usr/src/app/
6-
COPY tsconfig.json /usr/src/app/
7-
COPY src/index.ts /usr/src/app/src/
8-
COPY *.db /data/
9-
WORKDIR /usr/src/app
10-
11-
RUN npm install
12-
RUN npm run build
1+
# Build stage
2+
FROM cgr.dev/chainguard/wolfi-base:latest AS builder
3+
4+
ENV LANG=C.UTF-8
5+
ENV LC_ALL=C.UTF-8
6+
7+
RUN apk update && apk add --no-cache \
8+
bash \
9+
build-base \
10+
ca-certificates \
11+
curl \
12+
make \
13+
node-gyp \
14+
nodejs \
15+
npm \
16+
openssl \
17+
python3 \
18+
sqlite-dev \
19+
unzip \
20+
&& update-ca-certificates \
21+
&& rm -rf /var/cache/apk/*
22+
23+
WORKDIR /app
24+
25+
# Copy package files first for better layer caching
26+
COPY package.json package-lock.json tsconfig.json ./
27+
COPY src/ ./src/
28+
29+
# Install dependencies and build
30+
RUN --mount=type=cache,target=/root/.npm \
31+
npm install typescript && \
32+
npm ci --only=production && \
33+
npm install --save-dev typescript && \
34+
npm run build
35+
36+
# Production stage
37+
FROM cgr.dev/chainguard/wolfi-base:latest AS production
38+
39+
ENV LANG=C.UTF-8
40+
ENV LC_ALL=C.UTF-8
41+
ENV NODE_ENV=production
42+
43+
# Install only runtime dependencies
44+
RUN apk update && apk add --no-cache \
45+
nodejs \
46+
ca-certificates \
47+
sqlite \
48+
&& update-ca-certificates \
49+
&& rm -rf /var/cache/apk/*
50+
51+
# Create non-root user
52+
RUN addgroup -g 1001 -S nodejs && \
53+
adduser -S kagent -u 1001 -G nodejs
54+
55+
WORKDIR /app
56+
57+
# Copy built application and production dependencies from builder stage
58+
COPY --from=builder --chown=kagent:nodejs /app/build ./build
59+
COPY --from=builder --chown=kagent:nodejs /app/node_modules ./node_modules
60+
COPY --from=builder --chown=kagent:nodejs /app/package.json ./
61+
62+
USER kagent
63+
64+
LABEL org.opencontainers.image.source=https://github.com/kagent-dev/kagent-doc2vec
65+
LABEL org.opencontainers.image.description="Kagent Doc2Vec MCP"
66+
LABEL org.opencontainers.image.authors="Kagent Creators 🤖"
67+
68+
EXPOSE 3001
1369

1470
ENTRYPOINT ["node", "build/index.js"]

0 commit comments

Comments
 (0)