# syntax=docker/dockerfile:1 ARG NODE_VERSION=18 FROM node:${NODE_VERSION}-alpine # Use production node environment by default. ENV NODE_ENV production ENV PORT 7860 WORKDIR /usr/src/app # Download dependencies as a separate step to take advantage of Docker's caching. # Leverage a cache mount to /root/.npm to speed up subsequent builds. # Leverage a bind mounts to package.json and package-lock.json to avoid having to copy them into # into this layer. RUN --mount=type=bind,source=package.json,target=package.json \ --mount=type=bind,source=package-lock.json,target=package-lock.json \ --mount=type=cache,target=/root/.npm \ npm ci --omit=dev RUN mkdir -p /data/logs RUN chown -R node:node /data/logs # Run the application as a non-root user. USER node # Copy the rest of the source files into the image. COPY . /usr/src/app # Expose the port that the application listens on. EXPOSE 7860 ENV BODY_SIZE_LIMIT=50000000 # Run the application. CMD node build