FROM registry.yandex.net/data-ui/node-nginx:12r1

# build arguments
ARG YENV
ARG FRONTEND_S3_ACCESS_KEY_ID
ARG FRONTEND_S3_SECRET_ACCESS_KEY

ENV TMP_DIR=/tmp/app
ENV WORK_DIR=/opt/app
ENV LOGS_DIR=/ephemeral/var/log/frontend

# install requirements
COPY ./deploy/requirements /tmp/requirements
# fix certs-ca
RUN mv /etc/apt/sources.list.d/nodesource.list /etc/apt/sources.list.d/nodesource.list.disabled \
    && apt-get update \
    && apt-get  install -y ca-certificates libgnutls30 \
    && mv /etc/apt/sources.list.d/nodesource.list.disabled /etc/apt/sources.list.d/nodesource.list
RUN cat /tmp/requirements | xargs apt-get install -y -qq --allow-downgrades \
    && apt-get clean -qq \
    && rm /tmp/requirements

# geobase
RUN mkdir -p /var/cache/geobase
RUN curl --silent --insecure https://proxy.sandbox.yandex-team.ru/last/GEODATA6BIN_STABLE > /var/cache/geobase/geodata6.bin

RUN curl https://proxy.sandbox.yandex-team.ru/1317359659 > /usr/local/bin/jaeger-agent && chmod +x /usr/local/bin/jaeger-agent

# logrotate + cron
RUN rm -rf /etc/logrotate.d
COPY ./deploy/logrotate/. /etc/
COPY ./deploy/cron/yandex-logrotate /etc/cron.d/
RUN chmod -R 600 /etc/cron.d/*
# Cron bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=726661
RUN sed -i '/session    required     pam_loginuid.so/c\#session    required     pam_loginuid.so' /etc/pam.d/cron
RUN install -d -o app -g app /var/log/logrotate \
    && if [ -e /etc/cron.daily/logrotate ]; then rm /etc/cron.daily/logrotate; fi;

# push-client
COPY ./deploy/statbox-push-client/. /etc/statbox-push-client/

# supervisor
COPY ./deploy/supervisor/. /etc/supervisor/

# solomon-agent
COPY ./deploy/solomon/. /etc/solomon/

# jaeger-agent config
COPY ./deploy/jaeger/. /etc/jaeger-agent/

# nginx
COPY ./deploy/nginx/. /etc/nginx/

# create required directories
RUN install -d -o app -g app $WORK_DIR
RUN install -d -o app -g app $WORK_DIR/build
RUN install -d -o app -g app $WORK_DIR/build/server
RUN install -d -o app -g app $WORK_DIR/build/client
RUN install -d -o app -g app $WORK_DIR/public
RUN install -d -o app -g app $WORK_DIR/server
RUN install -d -o app -g app $WORK_DIR/server/run
RUN install -d -o app -g app $WORK_DIR/.config

# node_modules cache
WORKDIR $TMP_DIR/cache
COPY package.json ./package.json
COPY package-lock.json ./package-lock.json
RUN npm run dependency:install
RUN cp -r ./node_modules $TMP_DIR

WORKDIR $TMP_DIR
COPY . .

# build frontend
RUN npm run build:prerequisites
RUN npm run build:prod && npm run babel-all

# deploy static to s3
RUN YENV=$YENV \
    FRONTEND_S3_ACCESS_KEY_ID=$FRONTEND_S3_ACCESS_KEY_ID \
    FRONTEND_S3_SECRET_ACCESS_KEY=$FRONTEND_S3_SECRET_ACCESS_KEY \
    npm run deploy:static

# upload sourcemaps to error booster
RUN npm run upload:sourcemaps

# copy required files
RUN ./deploy/bin/copy.sh

# delete tmp files
RUN rm -rf $TMP_DIR

WORKDIR $WORK_DIR

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
