-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDockerfile
More file actions
57 lines (41 loc) · 1.59 KB
/
Copy pathDockerfile
File metadata and controls
57 lines (41 loc) · 1.59 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
52
53
54
55
56
57
# TAMS Server — Multi-stage Docker Build
#
# Builds the TypeScript monorepo and produces a minimal production image
# running the TAMS HTTP server on port 3100.
#
# Usage:
# docker build -t tams-server .
# docker run -p 3100:3100 --env-file .env tams-server
# --- Stage 1: Build ---
FROM node:22-alpine AS builder
WORKDIR /app
# Enable Corepack for Yarn Berry
RUN corepack enable
# Copy workspace config and lockfile first for layer caching
COPY package.json yarn.lock .yarnrc.yml ./
COPY .yarn .yarn
COPY packages/common/package.json packages/common/
COPY packages/core/package.json packages/core/
COPY packages/server/package.json packages/server/
COPY packages/mcp/package.json packages/mcp/
RUN yarn install --immutable
# Copy source and build
COPY tsconfig.json eslint.config.js ./
COPY packages packages
RUN yarn build
# --- Stage 2: Production ---
FROM node:22-alpine
WORKDIR /app
RUN corepack enable
# Copy built artifacts and production dependencies
COPY --from=builder /app/package.json /app/yarn.lock /app/.yarnrc.yml ./
COPY --from=builder /app/.yarn .yarn
COPY --from=builder /app/packages/common/package.json packages/common/
COPY --from=builder /app/packages/common/dist packages/common/dist
COPY --from=builder /app/packages/core/package.json packages/core/
COPY --from=builder /app/packages/core/dist packages/core/dist
COPY --from=builder /app/packages/server/package.json packages/server/
COPY --from=builder /app/packages/server/dist packages/server/dist
RUN yarn workspaces focus @tams/server --production
EXPOSE 3100
CMD ["node", "--enable-source-maps", "packages/server/dist/main.js"]