# App build FROM node:20-alpine as build-stage ARG user=node ARG project_dir=/opt/node_app ARG PORT=3000 ENV PORT $PORT ENV NODE_OPTIONS="--max_old_space_size=4096" EXPOSE $PORT ## Enable corepack for proper version of YARN RUN corepack enable RUN mkdir $project_dir && chown $user:$user $project_dir USER $user WORKDIR $project_dir ## Copy file for YARN then install all deps COPY --chown=$user .yarnrc.yml yarn.lock package.json ./ RUN yarn install --frozen-lockfile COPY --chown=$user . ./ ## Build the app RUN yarn run build CMD ["yarn", "start"]