pvanand commited on
Commit
fe244d6
·
verified ·
1 Parent(s): c7f318b

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +44 -0
Dockerfile ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # syntax=docker/dockerfile:1.4
2
+
3
+ # Use an official Node runtime as the base image
4
+ FROM node:18 AS base
5
+
6
+ # Create a deps stage for efficient caching
7
+ FROM base AS deps
8
+ WORKDIR /app
9
+
10
+ # Copy package.json and package-lock.json
11
+ COPY package*.json ./
12
+
13
+ # Install dependencies
14
+ RUN npm ci
15
+
16
+ # Build stage
17
+ FROM base AS builder
18
+ WORKDIR /app
19
+ COPY --from=deps /app/node_modules ./node_modules
20
+ COPY . .
21
+
22
+ # Production stage
23
+ FROM base AS runner
24
+ WORKDIR /app
25
+
26
+ ENV NODE_ENV production
27
+
28
+ # Create a non-root user
29
+ RUN addgroup --system --gid 1001 nodejs
30
+ RUN adduser --system --uid 1001 marpituser
31
+
32
+ # Copy necessary files
33
+ COPY --from=builder --chown=marpituser:nodejs /app/package*.json ./
34
+ COPY --from=builder --chown=marpituser:nodejs /app/node_modules ./node_modules
35
+ COPY --from=builder --chown=marpituser:nodejs /app/server.js ./
36
+
37
+ # Switch to non-root user
38
+ USER marpituser
39
+
40
+ EXPOSE 3000
41
+ ENV PORT 3000
42
+ ENV HOSTNAME 0.0.0.0
43
+
44
+ CMD ["node", "server.js"]