FROM node:20-alpine WORKDIR /app # Install OS dependencies for audio processing RUN apk add --no-cache ffmpeg chromaprint # Install dependencies COPY server/package*.json ./server/ RUN cd server && npm ci --omit=dev # Copy app source COPY server/ ./server/ COPY public/ ./public/ COPY shared/ ./shared/ # Set ownership and switch to non-root user RUN chown -R node:node /app USER node # Start server WORKDIR /app/server EXPOSE 3000 CMD ["node", "index.js"]