FROM node:20-alpine WORKDIR /app # Install dependencies first (cached layer) COPY package*.json ./ RUN npm install # Copy source and build COPY . . RUN npm run build # The built app lives in /app/dist/pwa/ # It is extracted by deploy.sh using `docker cp`