-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathDockerfile
More file actions
45 lines (40 loc) · 1.58 KB
/
Dockerfile
File metadata and controls
45 lines (40 loc) · 1.58 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
39
40
41
42
43
44
45
# builder image
FROM node:24.16.0-trixie AS builder
LABEL maintainer="dsp-data-team@broadinstitute.org"
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH=/usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY src /usr/src/app/src
COPY public /usr/src/app/public
COPY package.json /usr/src/app/package.json
COPY pnpm-lock.yaml /usr/src/app/pnpm-lock.yaml
COPY pnpm-workspace.yaml /usr/src/app/pnpm-workspace.yaml
COPY index.html /usr/src/app/index.html
COPY aliases.ts /usr/src/app/aliases.ts
COPY tsconfig.json /usr/src/app/tsconfig.json
COPY vite.config.ts /usr/src/app/vite.config.ts
COPY config/base_config.json /usr/src/app/public/config.json
RUN corepack enable && corepack prepare pnpm@11.1.2 --activate
RUN pnpm config set update-notifier false
RUN pnpm ci --loglevel warn
RUN pnpm run build
# build the server
COPY server /usr/src/app/server
RUN pnpm --dir /usr/src/app/server ci \
&& pnpm --dir /usr/src/app/server run build \
&& CI=true pnpm --dir /usr/src/app/server prune --prod --loglevel warn
# Commit hash to us.gcr.io/broad-dsp-gcr-public/base/nodejs:24-debian
FROM us.gcr.io/broad-dsp-gcr-public/base/nodejs@sha256:9f2376913120be40d4c7029b0cfbfce95536e73469c5f008263db3a901612cc6
ARG NODE_ENV=production
ARG PORT=8080
ENV NODE_ENV=${NODE_ENV}
ENV PORT=${PORT}
WORKDIR /usr/src/app
COPY --chmod=550 --chown=node:node --from=builder /usr/src/app/build ./build
COPY --chmod=550 --chown=node:node --from=builder /usr/src/app/server ./server
USER node
EXPOSE ${PORT}
CMD ["node", "server/dist/index.js"]