29 lines
728 B
Docker
29 lines
728 B
Docker
ARG NODE_IMAGE=node:22-alpine
|
|
|
|
FROM $NODE_IMAGE AS base
|
|
RUN apk --no-cache add dumb-init
|
|
RUN mkdir -p /home/node/app && chown node:node /home/node/app
|
|
RUN npm install -g pnpm
|
|
WORKDIR /home/node/app
|
|
USER node
|
|
RUN mkdir tmp
|
|
|
|
FROM base AS dependencies
|
|
COPY --chown=node:node ./package.json ./
|
|
COPY --chown=node:node ./pnpm-lock.yaml ./
|
|
RUN pnpm install
|
|
COPY --chown=node:node . .
|
|
|
|
FROM dependencies AS build
|
|
RUN node ace build
|
|
|
|
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
|
|
CMD [ "dumb-init", "node", "bin/server.js" ]
|