# Build stage FROM node:20-alpine AS build WORKDIR /app COPY package.json package-lock.json ./ COPY shared/package.json shared/ COPY server/package.json server/ COPY web/package.json web/ RUN npm ci COPY tsconfig.base.json ./ COPY shared/ shared/ COPY server/ server/ RUN npm run build -w shared && npm run build -w server # Runtime stage FROM node:20-alpine WORKDIR /app COPY package.json package-lock.json ./ COPY shared/package.json shared/ COPY server/package.json server/ COPY web/package.json web/ RUN npm ci --omit=dev COPY --from=build /app/shared/dist shared/dist COPY --from=build /app/server/dist server/dist ENV PORT=3001 EXPOSE 3001 CMD ["node", "server/dist/index.js"]