feat(api): exam screenshot service (#56940)

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
This commit is contained in:
Niraj Nandish
2025-02-18 13:24:54 +04:00
committed by GitHub
parent 71e39308a4
commit dac7fa3a14
18 changed files with 1901 additions and 97 deletions

View File

@@ -0,0 +1,49 @@
# Define project root argument
ARG PROJECT_DIR=tools/screenshot-service
# Build the app
FROM node:20-alpine AS builder
ARG PROJECT_DIR
RUN npm i -g pnpm@9
USER node
WORKDIR /home/node/build
COPY --chown=node:node *.* .
COPY --chown=node:node ${PROJECT_DIR} ${PROJECT_DIR}
RUN pnpm install --frozen-lockfile --ignore-scripts -F=./${PROJECT_DIR}
RUN pnpm -F=./${PROJECT_DIR} build
# Install production dependencies
FROM node:20-alpine AS deps
ARG PROJECT_DIR
RUN npm i -g pnpm@9
USER node
WORKDIR /home/node/build
COPY --chown=node:node pnpm*.yaml .
COPY --chown=node:node ${PROJECT_DIR} ${PROJECT_DIR}
RUN pnpm install --prod --ignore-scripts --frozen-lockfile -F=./${PROJECT_DIR}
# App runner instance
FROM node:20-alpine AS runner
ARG PROJECT_DIR
USER node
WORKDIR /home/node/fcc
# Copy the built app
COPY --from=builder --chown=node:node /home/node/build/${PROJECT_DIR}/dist ./
# Copy the production dependencies
COPY --from=deps --chown=node:node /home/node/build/node_modules/ node_modules/
COPY --from=deps --chown=node:node /home/node/build/${PROJECT_DIR}/node_modules ${PROJECT_DIR}/node_modules/
ENV PORT 3003
# Run the app
CMD [ "node", "./tools/screenshot-service/index.js" ]