FROM docker.internal.justin.tv/devrel/build-node as builder
# https://git-aws.internal.justin.tv/CPE-Ops/build-node

ARG ENV=development
ARG CODECOV_TOKEN

# Cache node modules until package.json changes
ADD package.json yarn.lock /tmp/
RUN cd /tmp && yarn install --pure-lockfile
RUN mkdir -p /opt/vienna && cp -a /tmp/node_modules /opt/vienna/

# Build Savant
WORKDIR /opt/vienna
RUN mkdir -p /opt/vienna/.ssh/; ssh-keyscan -t rsa git-aws.internal.justin.tv >> /opt/vienna/.ssh/known_hosts

ADD . /opt/vienna
RUN yarn build:${ENV}
RUN yarn test && yarn lint
RUN curl -s https://codecov.internal.justin.tv/bash | bash -s - -t ${CODECOV_TOKEN} -r devrel/vienna -s ./coverage

FROM nginx:1.11-alpine

RUN mkdir -p /opt/vienna
COPY --from=builder /opt/vienna/dist /opt/vienna/dist
ADD docker/nginx.conf /etc/nginx/nginx.conf
ADD docker/scripts/run.sh /opt/vienna/run.sh

WORKDIR /opt/vienna

EXPOSE 8080
CMD ./run.sh
