FROM node:22-alpine AS client-build WORKDIR /app/client COPY client/package*.json ./ RUN npm ci COPY client/ . RUN npm run build FROM node:22-alpine AS server-build WORKDIR /app/server COPY server/package*.json ./ RUN npm ci COPY server/ . RUN npx tsc FROM node:22-alpine WORKDIR /app RUN apk add --no-cache python3 make g++ COPY server/package*.json ./ RUN npm ci --omit=dev && apk del python3 make g++ COPY --from=server-build /app/server/dist ./dist COPY --from=client-build /app/client/dist ./public ENV NODE_ENV=production ENV PORT=3001 ENV DATA_DIR=/data EXPOSE 3001 CMD ["node", "dist/index.js"]