### STAGE 1: Build ###

# We label our stage as ‘builder’
FROM node:12.2-alpine as builder
RUN apk add --update jq && rm -rf /var/cache/apk/*
COPY package.json yarn.lock ./

## Storing node modules on a separate layer will prevent unnecessary npm installs at each build
RUN yarn install && mkdir /ng-app && mv ./node_modules ./ng-app

WORKDIR /ng-app

COPY . .

## Build the angular app in production mode and store the artifacts in dist folder
RUN yarn lint
RUN npm version patch --no-git-tag-version
RUN yarn build --prod --project=red-ui
### STAGE 2: Setup ###

FROM nginx:1.19.2-alpine

## Copy our default nginx config
COPY docker/common/nginx/nginx.conf.template /nginx.conf.template

## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*

## From ‘builder’ stage copy over the artifacts in dist folder to default nginx public folder
COPY --from=builder /ng-app/dist/apps/red-ui /usr/share/nginx/html
RUN chmod o+r -R /usr/share/nginx/html
RUN chmod g+r -R /usr/share/nginx/html

## Change permissions to enable openShift functionality
RUN chmod -R g+rwx /var/cache/nginx /var/run /var/log/nginx /usr/share /etc/nginx

COPY docker/red-ui/docker-entrypoint.sh /
CMD ["/docker-entrypoint.sh"]
