Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
38 lines (37 loc) · 1.61 KB
/
Copy pathDockerfile
File metadata and controls
38 lines (37 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Digest-pinned to match the SHA-pinning discipline Dockerfile.egress and
# Dockerfile.ingress already use, so a registry-side retag can't silently
# change what ships.
FROM node:22-bookworm-slim@sha256:83f487e0a63425e5b4d146fb5e5be574bcbe1b7b843d3ebafdd95eaf7767a7e5 AS build
WORKDIR /app
RUN npm install -g npm@latest
COPY package*.json ./
COPY apps/api/package.json apps/api/package.json
COPY apps/web/package.json apps/web/package.json
COPY packages/contracts/package.json packages/contracts/package.json
RUN npm install
COPY tsconfig.base.json ./
COPY apps ./apps
COPY packages ./packages
RUN npm run build \
&& npm prune --omit=dev
FROM node:22-bookworm-slim@sha256:83f487e0a63425e5b4d146fb5e5be574bcbe1b7b843d3ebafdd95eaf7767a7e5 AS runtime
ENV NODE_ENV=production
RUN npm install -g npm@latest
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
WORKDIR /app
COPY --from=build /app/package*.json ./
COPY --from=build /app/node_modules ./node_modules
RUN npx playwright install --with-deps chromium \
&& apt-get update \
&& apt-get upgrade -y --no-install-recommends libpcre2-8-0 \
&& rm -rf /var/lib/apt/lists/* \
&& chown -R node:node /ms-playwright \
&& rm -rf /usr/local/lib/node_modules/npm /usr/local/bin/npm /usr/local/bin/npx
COPY --from=build /app/apps/api/package.json ./apps/api/package.json
COPY --from=build /app/apps/api/dist ./apps/api/dist
COPY --from=build /app/apps/web/dist ./apps/web/dist
COPY --from=build /app/packages/contracts/package.json ./packages/contracts/package.json
COPY --from=build /app/packages/contracts/dist ./packages/contracts/dist
USER node
EXPOSE 43100
CMD ["node", "apps/api/dist/server.js"]