FROM registry.yandex.net/ubuntu:bionic AS base_image

FROM base_image as pyflame_builder
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -qq && \
    apt-get install -y -qq autoconf automake autotools-dev g++ git pkg-config python-dev python3-dev libtool make && \
    apt-get clean -qq
RUN git clone https://github.com/uber/pyflame.git --branch 'v1.6.3'
WORKDIR pyflame
RUN ./autogen.sh
RUN ./configure
RUN make

FROM base_image
COPY --from=pyflame_builder /pyflame/src/pyflame /usr/bin/pyflame

# Install requirements
COPY debian-requirements.txt /tmp/requirements.txt
COPY pip/pip.conf /etc/pip.conf
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update -qq \
    && cat /tmp/requirements.txt | xargs apt-get install -y -qq --allow-downgrades \
    && apt-get clean -qq \
    && rm /tmp/requirements.txt

RUN python3.7 -m pip install pip==19.3.1

RUN apt-get -y -qq install ssh

# yandex auth
ARG auth_dir=/usr/share/yandex-avia-auth
COPY yandex_auth ${auth_dir}
RUN python3.7 -m venv ${auth_dir} && . ${auth_dir}/bin/activate && pip install pip==19.3.1 && pip install -r ${auth_dir}/requirements.txt
COPY cron/yandex-auth /etc/cron.d/yandex-auth

# push-client
COPY statbox-push-client /etc/yandex/statbox-push-client/
RUN mkdir -p /var/log && touch /var/log/dummy.log
COPY cron/cleanup-push-client-files /etc/cron.d/

# Supervisor
RUN pip install pip==21.1.1
RUN python3.7 -m pip install supervisor==4.1.0 \
    && ln -s /usr/local/bin/supervisorctl /usr/bin/supervisorctl \
    && ln -s /usr/local/bin/supervisord /usr/bin/supervisord \
    && mkdir /var/log/supervisor
COPY supervisor/supervisord.conf /etc/supervisor/supervisord.conf
COPY supervisor/conf.d/* /etc/supervisor/conf.d/

# cron
COPY pam/* /etc/pam.d/

# nginx
RUN mkdir -p /etc/nginx/auth
COPY nginx/nginx.conf /etc/nginx/
COPY nginx/listen /etc/nginx/
COPY nginx/listen_tvm /etc/nginx/
COPY nginx/proxy_params /etc/nginx/
COPY nginx/conf.d/* /etc/nginx/conf.d/
COPY nginx/auth/* /etc/nginx/auth/
COPY nginx/pre_start.sh /etc/nginx/

# RASPTICKETS-10750
RUN install -d -o www-data -g www-data /var/log/nginx \
    && touch /var/log/nginx/access.log \
    && chown -R www-data:www-data /var/log/nginx/access.log

# logrotate
COPY logrotate/* /etc/logrotate.d/
COPY cron/yandex-logrotate /etc/cron.d/
RUN mkdir /var/log/logrotate \
    && if [ -e /etc/cron.daily/logrotate ]; then rm /etc/cron.daily/logrotate; fi;
RUN addgroup syslog

# copy solomon configs
RUN mkdir -p /etc/solomon
COPY solomon/ /etc/solomon/


# copy pre_start scripts
RUN mkdir /bin/pre_start
COPY pre_start/ /bin/pre_start/
RUN chmod +x /bin/pre_start/*

# bin
COPY bin/docker-entrypoint.sh /bin/docker-entrypoint.sh

ENV REQUESTS_CA_BUNDLE /etc/ssl/certs/ca-certificates.crt

ENV SUPERVISOR_PUSH_CLIENT_CONFIG /etc/supervisor/conf.d/05-push-client.conf

ENTRYPOINT ["/bin/docker-entrypoint.sh"]

CMD /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
