###################
# BUILD FOR CI TESTING
###################

FROM node:18-alpine3.16

# Create app directory
WORKDIR /usr/src/app

# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./

# Install app dependencies
RUN npm ci

# Bundle app source
COPY . .

# Generate prisma client
RUN npx prisma generate

# Create a "dist" folder
RUN npm run build

# Run unit tests
RUN npm run test:unit:ci

# Start the server
CMD [ "node", "dist/main.js" ]