secutorpro commited on
Commit
8259ea8
·
verified ·
1 Parent(s): e8c4962

multi-stage build: vite frontend + node server

Browse files
Files changed (1) hide show
  1. Dockerfile +11 -6
Dockerfile CHANGED
@@ -1,17 +1,22 @@
 
1
  FROM node:20-alpine AS webbuild
2
- WORKDIR /app/web
3
  COPY web/package.json ./
4
  RUN npm install
5
- COPY web ./
6
  RUN npm run build
7
 
 
8
  FROM node:20-alpine
9
- RUN apk add --no-cache python3 make g++
10
  WORKDIR /app/server
 
 
11
  COPY server/package.json ./
12
  RUN npm install --omit=dev
13
- COPY server ./
14
- COPY --from=webbuild /app/web/dist /app/web/dist
15
- ENV NODE_ENV=production PORT=8080
 
 
16
  EXPOSE 8080
17
  CMD ["node", "src/index.js"]
 
1
+ # ---- build the web frontend ----
2
  FROM node:20-alpine AS webbuild
3
+ WORKDIR /build
4
  COPY web/package.json ./
5
  RUN npm install
6
+ COPY web/ ./
7
  RUN npm run build
8
 
9
+ # ---- server runtime ----
10
  FROM node:20-alpine
 
11
  WORKDIR /app/server
12
+ # build tools as a fallback if better-sqlite3 has no prebuilt binary
13
+ RUN apk add --no-cache python3 make g++
14
  COPY server/package.json ./
15
  RUN npm install --omit=dev
16
+ COPY server/ ./
17
+ COPY --from=webbuild /build/dist /app/web/dist
18
+
19
+ ENV NODE_ENV=production
20
+ ENV PORT=8080
21
  EXPOSE 8080
22
  CMD ["node", "src/index.js"]