# syntax=docker/dockerfile:1 FROM node:22-alpine AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --omit=dev --ignore-scripts && npm cache clean --force FROM node:22-alpine AS build WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --ignore-scripts COPY tsconfig.json tsconfig.build.json ./ COPY src ./src RUN npm run build FROM node:22-alpine AS runtime ENV NODE_ENV=production \ HOST=0.0.0.0 \ PORT=8100 \ DATA_DIR=/app/data \ NPM_CONFIG_UPDATE_NOTIFIER=false WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY --from=build /app/dist ./dist COPY package.json ./ RUN mkdir -p /app/data && chown -R node:node /app USER node EXPOSE 8100 CMD ["node", "dist/index.js"]