k-l-lambda Claude commited on
Commit
11f07f6
·
1 Parent(s): 2cbd678

Use pre-built dist folder instead of building in Docker

Browse files

Skip vite build step entirely - use pre-built frontend dist folder.
HF Space's git clone resolves LFS files properly, so the ONNX models
and WASM files should be copied correctly.

This avoids the vite build failures we've been seeing.

Co-Authored-By: Claude <noreply@anthropic.com>

Files changed (1) hide show
  1. Dockerfile +21 -18
Dockerfile CHANGED
@@ -3,7 +3,7 @@ FROM node:20-slim
3
  # Set noninteractive installation
4
  ENV DEBIAN_FRONTEND=noninteractive
5
 
6
- # Build timestamp to force cache invalidation: 2026-01-12T21:50
7
 
8
  # Install build dependencies
9
  RUN apt-get update && apt-get install -y \
@@ -14,18 +14,10 @@ RUN apt-get update && apt-get install -y \
14
  # Create app directory
15
  WORKDIR /app
16
 
17
- # Copy only the source files (not pre-built dist)
18
  COPY trigo-web/package*.json ./
19
  COPY trigo-web/app/package*.json ./app/
20
  COPY trigo-web/backend/package*.json ./backend/
21
- COPY trigo-web/inc/ ./inc/
22
- COPY trigo-web/public/ ./public/
23
- COPY trigo-web/app/src/ ./app/src/
24
- COPY trigo-web/app/index.html ./app/
25
- COPY trigo-web/app/vite.config.ts ./app/
26
- COPY trigo-web/app/tsconfig*.json ./app/
27
- COPY trigo-web/backend/src/ ./backend/src/
28
- COPY trigo-web/backend/tsconfig.json ./backend/
29
 
30
  # Copy .env files
31
  COPY trigo-web/.env* ./
@@ -35,16 +27,27 @@ COPY trigo-web/backend/.env* ./backend/
35
  # Install build tools globally
36
  RUN npm install -g tsx jison typescript esbuild
37
 
38
- # Install dependencies
39
- RUN npm install --omit=dev && \
40
- cd app && npm install && \
41
- cd ../backend && npm install && \
42
- cd ..
 
 
 
43
 
44
- # Build frontend with vite (increase memory limit)
45
- RUN cd app && NODE_OPTIONS="--max-old-space-size=4096" npm run build:prod
46
 
47
- # Build backend with esbuild
 
 
 
 
 
 
 
 
48
  RUN mkdir -p backend/dist/backend/src && \
49
  esbuild backend/src/server.ts --bundle --platform=node --target=node20 --format=esm --outfile=backend/dist/backend/src/server.js --external:express --external:socket.io --external:cors --external:dotenv --external:uuid
50
 
 
3
  # Set noninteractive installation
4
  ENV DEBIAN_FRONTEND=noninteractive
5
 
6
+ # Build timestamp to force cache invalidation: 2026-01-12T22:15
7
 
8
  # Install build dependencies
9
  RUN apt-get update && apt-get install -y \
 
14
  # Create app directory
15
  WORKDIR /app
16
 
17
+ # Copy package files first for better caching
18
  COPY trigo-web/package*.json ./
19
  COPY trigo-web/app/package*.json ./app/
20
  COPY trigo-web/backend/package*.json ./backend/
 
 
 
 
 
 
 
 
21
 
22
  # Copy .env files
23
  COPY trigo-web/.env* ./
 
27
  # Install build tools globally
28
  RUN npm install -g tsx jison typescript esbuild
29
 
30
+ # Install production dependencies only at root level
31
+ RUN npm install --omit=dev
32
+
33
+ # Install app runtime dependencies (for onnxruntime-web)
34
+ RUN cd app && npm install --omit=dev
35
+
36
+ # Install backend dependencies
37
+ RUN cd backend && npm install
38
 
39
+ # Copy pre-built frontend dist folder (includes ONNX models and WASM files via LFS)
40
+ COPY trigo-web/app/dist/ ./app/dist/
41
 
42
+ # Copy public folder
43
+ COPY trigo-web/public/ ./public/
44
+
45
+ # Copy inc folder (shared types)
46
+ COPY trigo-web/inc/ ./inc/
47
+
48
+ # Copy backend source and build with esbuild
49
+ COPY trigo-web/backend/src/ ./backend/src/
50
+ COPY trigo-web/backend/tsconfig.json ./backend/
51
  RUN mkdir -p backend/dist/backend/src && \
52
  esbuild backend/src/server.ts --bundle --platform=node --target=node20 --format=esm --outfile=backend/dist/backend/src/server.js --external:express --external:socket.io --external:cors --external:dotenv --external:uuid
53