-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
37 lines (26 loc) · 966 Bytes
/
Dockerfile
File metadata and controls
37 lines (26 loc) · 966 Bytes
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
# ---- Build Stage ----
FROM node:20-slim AS builder
WORKDIR /app
# Copy package files and install ALL dependencies (including dev for build)
COPY package.json package-lock.json* ./
RUN npm ci
# Copy source files
COPY backend/ ./backend/
COPY frontend/ ./frontend/
COPY vite.config.ts ./
# Build backend (TypeScript → dist) and frontend (Vite → frontend/dist)
RUN npm run build
# ---- Production Stage ----
FROM node:20-slim AS runner
WORKDIR /app
# Copy package files and install PRODUCTION dependencies only
COPY package.json package-lock.json* ./
RUN npm ci --omit=dev
# Copy compiled backend
COPY --from=builder /app/backend/dist ./backend/dist
# Copy built frontend assets (served as static files by Express)
COPY --from=builder /app/frontend/dist ./frontend/dist
# Cloud Run sets PORT automatically; default to 8080
ENV PORT=8080
# Start the server (no --env-file flag; env vars are injected by Cloud Run)
CMD ["node", "backend/dist/server.js"]