|
1 | | -# Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile |
2 | 1 | # ----- Build Stage ----- |
3 | 2 | FROM node:lts-alpine AS builder |
| 3 | +RUN corepack enable pnpm |
4 | 4 | WORKDIR /app |
5 | 5 |
|
6 | | -# Copy package and configuration |
7 | | -COPY package.json bun.lock tsconfig.json ./ |
| 6 | +# Copy monorepo config and install dependencies |
| 7 | +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml tsconfig.json ./ |
| 8 | +COPY packages/mcp ./packages/mcp |
| 9 | +RUN pnpm install --frozen-lockfile |
8 | 10 |
|
9 | | -# Copy source code |
10 | | -COPY src ./src |
11 | | - |
12 | | -# Install dependencies and build |
13 | | -RUN npm install && npm run build |
| 11 | +# Build the mcp package |
| 12 | +RUN pnpm --filter @upstash/context7-mcp build |
14 | 13 |
|
15 | 14 | # ----- Production Stage ----- |
16 | 15 | FROM node:lts-alpine |
| 16 | +RUN corepack enable pnpm |
17 | 17 | WORKDIR /app |
18 | 18 |
|
19 | | -# Copy built artifacts |
20 | | -COPY --from=builder /app/dist ./dist |
21 | | - |
22 | | -# Copy package.json for production install |
23 | | -COPY package.json ./ |
| 19 | +# Install production dependencies only |
| 20 | +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ |
| 21 | +COPY packages/mcp/package.json ./packages/mcp/ |
| 22 | +RUN pnpm install --frozen-lockfile --prod --filter @upstash/context7-mcp |
24 | 23 |
|
25 | | -# Install only production dependencies |
26 | | -RUN npm install --production --ignore-scripts |
| 24 | +# Copy built files from builder |
| 25 | +COPY --from=builder /app/packages/mcp/dist ./packages/mcp/dist |
27 | 26 |
|
28 | | -# Expose HTTP port |
| 27 | +WORKDIR /app/packages/mcp |
29 | 28 | EXPOSE 8080 |
30 | | - |
31 | | -# Default command using CLI flags |
32 | 29 | CMD ["node", "dist/index.js", "--transport", "http", "--port", "8080"] |
0 commit comments