k-l-lambda Claude commited on
Commit
26001bb
·
1 Parent(s): 7bb4f7a

Use yarn for root install, npm for backend

Browse files

- Use yarn for root level (has yarn.lock)
- Use npm ci for backend (no yarn.lock)
- Skip devDependencies for backend (not needed for production)

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

Files changed (1) hide show
  1. Dockerfile +15 -16
Dockerfile CHANGED
@@ -2,30 +2,30 @@ FROM node:20-slim
2
 
3
  ENV DEBIAN_FRONTEND=noninteractive
4
 
5
- # Build timestamp: 2026-01-12T23:30
6
 
7
  RUN apt-get update && apt-get install -y curl git git-lfs && rm -rf /var/lib/apt/lists/*
8
 
 
 
 
9
  WORKDIR /app
10
 
11
  # Initialize git-lfs
12
  RUN git lfs install
13
 
14
- # Copy package files
15
  RUN mkdir -p app backend
16
  COPY trigo-web/package.json ./package.json
17
- COPY trigo-web/package-lock.json ./package-lock.json
18
  COPY trigo-web/backend/package.json ./backend/package.json
19
- COPY trigo-web/backend/package-lock.json ./backend/package-lock.json
20
 
21
- # Install build tools
22
- RUN npm install -g tsx esbuild
23
 
24
- # Install root deps (production only)
25
- RUN npm ci --omit=dev || npm install --omit=dev --force
26
-
27
- # Install backend deps with retry
28
- RUN cd backend && (npm ci || npm install --force)
29
 
30
  # Copy backend source
31
  COPY trigo-web/backend/src/ ./backend/src/
@@ -37,7 +37,7 @@ RUN mkdir -p backend/dist/backend/src && \
37
  --outfile=backend/dist/backend/src/server.js \
38
  --external:express --external:socket.io --external:cors --external:dotenv --external:uuid
39
 
40
- # Copy pre-built frontend dist directly (skip app npm install and vite build)
41
  COPY trigo-web/app/dist/ ./app/dist/
42
 
43
  # Copy public folder
@@ -48,16 +48,15 @@ COPY trigo-web/.env ./.env
48
  COPY trigo-web/backend/.env ./backend/.env
49
  COPY trigo-web/backend/.env.local ./backend/.env.local
50
 
51
- # Copy inc folder (shared types)
52
  COPY trigo-web/inc/ ./inc/
53
 
54
  # Copy parser
55
  COPY trigo-web/public/lib/tgnParser.cjs ./public/lib/
56
 
57
- # Check that LFS files were properly copied
58
  RUN echo "=== Checking LFS files ===" && \
59
  ls -la app/dist/assets/*.wasm 2>/dev/null || echo "No WASM files found" && \
60
- ls -la app/dist/onnx/*/*.onnx 2>/dev/null | head -5 || echo "No ONNX files found" && \
61
  file app/dist/assets/*.wasm 2>/dev/null | head -1 || echo "Cannot check file type"
62
 
63
  ENV PORT=7860
@@ -66,4 +65,4 @@ ENV NODE_ENV=production
66
 
67
  EXPOSE 7860
68
 
69
- CMD ["npm", "run", "start:prod"]
 
2
 
3
  ENV DEBIAN_FRONTEND=noninteractive
4
 
5
+ # Build timestamp: 2026-01-12T23:40
6
 
7
  RUN apt-get update && apt-get install -y curl git git-lfs && rm -rf /var/lib/apt/lists/*
8
 
9
+ # Install yarn
10
+ RUN npm install -g yarn tsx esbuild
11
+
12
  WORKDIR /app
13
 
14
  # Initialize git-lfs
15
  RUN git lfs install
16
 
17
+ # Copy all package files
18
  RUN mkdir -p app backend
19
  COPY trigo-web/package.json ./package.json
20
+ COPY trigo-web/yarn.lock ./yarn.lock
21
  COPY trigo-web/backend/package.json ./backend/package.json
 
22
 
23
+ # Install root deps with yarn
24
+ RUN yarn install --production --frozen-lockfile || yarn install --production
25
 
26
+ # Install backend deps (no yarn.lock, use npm)
27
+ COPY trigo-web/backend/package-lock.json ./backend/package-lock.json
28
+ RUN cd backend && npm ci --omit=dev || npm install --omit=dev --force
 
 
29
 
30
  # Copy backend source
31
  COPY trigo-web/backend/src/ ./backend/src/
 
37
  --outfile=backend/dist/backend/src/server.js \
38
  --external:express --external:socket.io --external:cors --external:dotenv --external:uuid
39
 
40
+ # Copy pre-built frontend dist
41
  COPY trigo-web/app/dist/ ./app/dist/
42
 
43
  # Copy public folder
 
48
  COPY trigo-web/backend/.env ./backend/.env
49
  COPY trigo-web/backend/.env.local ./backend/.env.local
50
 
51
+ # Copy inc folder
52
  COPY trigo-web/inc/ ./inc/
53
 
54
  # Copy parser
55
  COPY trigo-web/public/lib/tgnParser.cjs ./public/lib/
56
 
57
+ # Check LFS files
58
  RUN echo "=== Checking LFS files ===" && \
59
  ls -la app/dist/assets/*.wasm 2>/dev/null || echo "No WASM files found" && \
 
60
  file app/dist/assets/*.wasm 2>/dev/null | head -1 || echo "Cannot check file type"
61
 
62
  ENV PORT=7860
 
65
 
66
  EXPOSE 7860
67
 
68
+ CMD ["yarn", "start:prod"]