NathMen12 commited on
Commit
a0a2171
·
verified ·
1 Parent(s): 7c73cf8

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +16 -44
Dockerfile CHANGED
@@ -1,55 +1,27 @@
1
- # Multi-stage Dockerfile for Hugging Face Spaces
2
- # ---- Build Stage ----
3
- FROM node:20-alpine AS builder
4
 
5
- WORKDIR /app
6
-
7
- # Install build dependencies for native modules (sharp, bcrypt)
8
- RUN apk add --no-cache \
9
- python3 \
10
- make \
11
- g++ \
12
- vips-dev \
13
- ca-certificates
14
 
15
- # Copy package files
 
 
16
  COPY package*.json ./
17
-
18
- # Install production dependencies only
19
  RUN npm ci --omit=dev
20
 
21
- # Copy source code
22
- COPY src/ ./src/
23
-
24
- # ---- Runtime Stage ----
25
- FROM node:20-alpine AS runner
26
-
27
- ENV NODE_ENV=production
28
- ENV PORT=7860
29
- ENV CACHE_BYPASS=2026-07-15
30
-
31
- # Install runtime dependencies (sharp needs libvips)
32
- RUN apk add --no-cache \
33
- vips \
34
- ca-certificates \
35
- tini \
36
- && addgroup -g 1001 -S nodejs \
37
- && adduser -S nodejs -u 1001
38
-
39
  WORKDIR /app
40
 
41
- # Copy built application from builder stage
42
- COPY --from=builder --chown=nodejs:nodejs /app/node_modules ./node_modules
43
- COPY --from=builder --chown=nodejs:nodejs /app/src ./src
44
- COPY --from=builder --chown=nodejs:nodejs /app/package.json ./
45
 
46
- # Create directory for static files (frontend)
47
- RUN mkdir -p /app/src/client && chown nodejs:nodejs /app/src/client
 
48
 
49
- USER nodejs
 
50
 
 
51
  EXPOSE 7860
52
-
53
- # Use tini for proper signal handling
54
- ENTRYPOINT ["tini", "--"]
55
- CMD ["node", "src/server/index.js"]
 
1
+ 2. Dockerfile
 
 
2
 
 
 
 
 
 
 
 
 
 
3
 
4
+ # --- Build Stage ---
5
+ FROM node:22-alpine AS builder
6
+ WORKDIR /app
7
  COPY package*.json ./
 
 
8
  RUN npm ci --omit=dev
9
 
10
+ # --- Runtime Stage ---
11
+ FROM node:22-alpine
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  WORKDIR /app
13
 
14
+ # User non-root pour sécurité
15
+ RUN addgroup -g 1000 -S pixeldrive && adduser -u 1000 -S pixeldrive -G pixeldrive
 
 
16
 
17
+ # Copier node_modules et code
18
+ COPY --from=builder --chown=pixeldrive:pixeldrive /app/node_modules ./node_modules
19
+ COPY --chown=pixeldrive:pixeldrive server.js .
20
 
21
+ # Dossier données (monté via docker-compose)
22
+ RUN mkdir -p /data && chown -R pixeldrive:pixeldrive /data
23
 
24
+ USER pixeldrive
25
  EXPOSE 7860
26
+ ENV NODE_ENV=production
27
+ CMD ["node", "server.js"]