#get the latest alpine image from node registry FROM node:16-alpine AS build-stage RUN npm i -g pnpm #set the working directory WORKDIR /app #copy the package and package lock files #from local to container work directory /app COPY package.json /app/ COPY pnpm-lock.yaml /app/ #Run command npm install to install packages RUN pnpm install #copy all the folder contents from local to container COPY . . #specify env variables at runtime ARG REACT_APP_ENKETO_URL ARG REACT_APP_FORM_MANAGER_URL ARG REACT_APP_HASURA_URL ENV REACT_APP_ENKETO_URL $REACT_APP_ENKETO_URL ENV REACT_APP_FORM_MANAGER_URL $REACT_APP_FORM_MANAGER_URL ENV REACT_APP_HASURA_URL $REACT_APP_HASURA_URL #create a react production build RUN npm run build #get the latest alpine image from nginx registry FROM nginx:alpine #we copy the output from first stage that is our react build #into nginx html directory where it will serve our index file COPY --from=build-stage /app/build/ /usr/share/nginx/html