# BUILD ENVIRONMENT
FROM node:16-slim AS builder
WORKDIR /app

ARG APP_SUBFOLDER=""

COPY .npmrc .npmrc 
COPY package*.json ./
RUN npm install
RUN rm -f .npmrc

COPY . ./

# build the react app
RUN if [ -z "$APP_SUBFOLDER" ]; then npm run build; else PUBLIC_URL=/${APP_SUBFOLDER}/ npm run build; fi

# PRODUCTION ENVIRONMENT
FROM node:16-slim

ARG APP_SUBFOLDER=""

RUN printf '\n\n- Copy application files\n'
COPY --from=builder /app/build ./application/${APP_SUBFOLDER}
COPY --from=builder /app/build/index.html ./application/
COPY --from=builder /app/setenv.js ./application/setenv.js

#install static server
RUN npm install -g serve

# environment variables
ENV AUTHOR="Tudor Stanciu"
ENV PUBLIC_URL=/${APP_SUBFOLDER}/
ARG APP_VERSION=0.0.0
ENV APP_VERSION=${APP_VERSION}

ARG APP_DATE="-"
ENV APP_DATE=${APP_DATE}

#set workdir to root
WORKDIR /

EXPOSE 80

CMD ["sh", "-c", "node application/setenv.js && serve -s application -p 80"]