Spaces:
Sleeping
Sleeping
Commit
·
11f07f6
1
Parent(s):
2cbd678
Use pre-built dist folder instead of building in Docker
Browse filesSkip 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>
- 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-
|
| 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
|
| 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 |
-
|
| 41 |
-
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
-
#
|
| 45 |
-
|
| 46 |
|
| 47 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
|