FROM node:22-alpine AS build WORKDIR /app # 1. Install server dependencies (cached layer) COPY furumi-node-player/server/package.json furumi-node-player/server/package-lock.json ./server/ RUN cd server && npm ci # 2. Install client dependencies (cached layer) COPY furumi-node-player/client/package.json furumi-node-player/client/package-lock.json ./client/ RUN cd client && npm ci # 3. Build server COPY furumi-node-player/server/ ./server/ RUN cd server && npm run build # 4. Build client (VITE_FURUMI_API_URL empty = relative /api on same origin) COPY furumi-node-player/client/ ./client/ RUN cd client && npm run build FROM node:22-alpine WORKDIR /app # Server runtime COPY --from=build /app/server/dist ./server/dist COPY --from=build /app/server/node_modules ./server/node_modules COPY --from=build /app/server/package.json ./server/ # Client static files COPY --from=build /app/client/dist ./client/dist ENV NODE_ENV=production ENV PORT=3001 EXPOSE 3001 CMD ["node", "server/dist/index.js"]