| |
| FROM node:22-alpine AS builder |
|
|
| |
| WORKDIR /app |
|
|
| |
| COPY package.json package-lock.json ./ |
| RUN npm ci |
|
|
| |
| COPY tsconfig.json ./ |
| COPY src ./src |
| RUN npm run build |
|
|
| |
| FROM node:22-alpine AS runner |
|
|
| WORKDIR /app |
|
|
| |
| ENV NODE_ENV=production |
|
|
| |
| RUN addgroup --system --gid 1001 nodejs && \ |
| adduser --system --uid 1001 cursor |
|
|
| |
| COPY package.json package-lock.json ./ |
| RUN npm ci --omit=dev \ |
| && npm cache clean --force |
|
|
| |
| COPY --from=builder --chown=cursor:nodejs /app/dist ./dist |
|
|
| |
| COPY --chown=cursor:nodejs public ./public |
|
|
| |
| RUN mkdir -p /app/logs && chown cursor:nodejs /app/logs |
|
|
| |
| |
|
|
| |
| USER cursor |
|
|
| |
| EXPOSE 3010 |
| VOLUME ["/app/logs"] |
|
|
| |
| CMD ["npm", "start"] |
|
|