Skip to content

Commit 7f42c96

Browse files
Fix asset caching (#153)
* Switch to custom server * remove app load context * Simplify Dockerfile
1 parent f6b1cf6 commit 7f42c96

File tree

6 files changed

+242
-96
lines changed

6 files changed

+242
-96
lines changed

Dockerfile

+22-39
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,30 @@
1-
# base node image
2-
FROM node:20-alpine as base
3-
4-
# set for base and all layer that inherit from it
5-
ENV NODE_ENV production
6-
7-
# Install all node_modules, including dev dependencies
8-
FROM base as deps
9-
10-
WORKDIR /myapp
11-
12-
ADD package.json package-lock.json .npmrc ./
13-
RUN npm install --production=false
14-
15-
# Setup production node_modules
16-
FROM base as production-deps
17-
18-
WORKDIR /myapp
19-
20-
COPY --from=deps /myapp/node_modules /myapp/node_modules
21-
ADD package.json package-lock.json .npmrc ./
22-
RUN npm prune --production
23-
24-
# Build the app
25-
FROM base as build
26-
27-
WORKDIR /myapp
28-
29-
COPY --from=deps /myapp/node_modules /myapp/node_modules
30-
31-
ADD . .
1+
FROM node:20-alpine AS development-dependencies-env
2+
COPY . /app
3+
WORKDIR /app
4+
RUN npm ci
5+
6+
FROM node:20-alpine AS production-dependencies-env
7+
COPY ./package.json package-lock.json .npmrc /app/
8+
WORKDIR /app
9+
RUN npm ci --omit=dev
10+
11+
FROM node:20-alpine AS build-env
12+
COPY . /app/
13+
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
14+
WORKDIR /app
3215
RUN npm run build
3316

34-
# Finally, build the production image with minimal footprint
35-
FROM base
17+
FROM node:20-alpine
18+
COPY ./package.json package-lock.json server.js /app/
19+
3620

3721
ENV PORT="8080"
3822
ENV NODE_ENV="production"
3923

40-
WORKDIR /myapp
24+
COPY --from=production-dependencies-env /app/node_modules /app/node_modules
25+
COPY --from=build-env /app/build /app/build
26+
COPY --from=build-env /app/start.sh /app/start.sh
4127

42-
COPY --from=production-deps /myapp/node_modules /myapp/node_modules
43-
COPY --from=build /myapp/build /myapp/build
44-
COPY --from=build /myapp/package.json /myapp/package.json
45-
COPY --from=build /myapp/start.sh /myapp/start.sh
4628

47-
CMD ["npm", "start"]
29+
WORKDIR /app
30+
CMD ["npm", "run", "start"]

0 commit comments

Comments
 (0)