30 lines
790 B
Docker
30 lines
790 B
Docker
ARG NODE_IMAGE=node:22-slim
|
|
|
|
###### First Stage - Creating base ######
|
|
FROM $NODE_IMAGE as base
|
|
RUN mkdir -p /home/node/app && chown node:node /home/node/app
|
|
RUN npm install --global pnpm
|
|
WORKDIR /home/node/app
|
|
USER node
|
|
RUN mkdir tmp
|
|
|
|
###### Second Stage - Installing dependencies ######
|
|
FROM base AS dependencies
|
|
COPY --chown=node:node ./package*.json ./
|
|
RUN pnpm install
|
|
COPY --chown=node:node . .
|
|
|
|
###### Third Stage - Building Stage ######
|
|
FROM dependencies AS build
|
|
RUN node ace build
|
|
|
|
###### Final Stage - Production ######
|
|
FROM base as production
|
|
ENV NODE_ENV=production
|
|
ENV PORT=3333
|
|
ENV HOST=0.0.0.0
|
|
COPY --chown=node:node ./package.json ./
|
|
COPY --chown=node:node ./pnpm-lock.yaml ./
|
|
RUN pnpm install --prod
|
|
COPY --chown=node:node --from=build /home/node/app/build .
|
|
EXPOSE 3333
|