FROM node:20-alpine

WORKDIR /app

# Install dependencies required for crypto/bcrypt if needed
RUN apk add --no-cache python3 make g++

COPY package*.json ./

RUN npm ci --only=production

COPY . .

# Exchange APIs typically run on a designated port
EXPOSE 3000

# Use clustering via server.js or PM2 in production. 
# Here we use node, server.js must implement cluster mode
CMD ["node", "src/server.js"]
