Spaces:
Paused
Paused
| FROM node:20.8-alpine as builder | |
| LABEL version="1.0.0" | |
| LABEL description="Consumet API (fastify) Docker Image" | |
| # update packages, to reduce risk of vulnerabilities | |
| RUN apk update && apk upgrade | |
| # RUN apk cache clean | |
| # set a non privileged user to use when running this image | |
| RUN addgroup -S nodejs && adduser -S nodejs -G nodejs | |
| USER nodejs | |
| # set right (secure) folder permissions | |
| RUN mkdir -p /home/nodejs/app/node_modules && chown -R nodejs:nodejs /home/nodejs/app | |
| WORKDIR /home/nodejs/app | |
| # set default node env | |
| # to be able to run tests (for example in CI), do not set production as environment | |
| ENV NODE_ENV=production | |
| ENV PORT=3000 | |
| ENV NPM_CONFIG_LOGLEVEL=warn | |
| # copy project definition/dependencies files, for better reuse of layers | |
| COPY --chown=nodejs:nodejs package*.json ./ | |
| RUN apk add --no-cache git | |
| # install dependencies here, for better reuse of layers | |
| RUN npm install && npm update && npm cache clean --force | |
| # copy all sources in the container (exclusions in .dockerignore file) | |
| COPY --chown=nodejs:nodejs . . | |
| EXPOSE 3000 | |
| # add an healthcheck, useful | |
| # healthcheck by calling the additional script exposed by the plugin | |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=5s CMD npm run healthcheck-manual | |
| # ENTRYPOINT [ "npm" ] | |
| CMD [ "npm", "start" ] |