FROM registry.yandex.net/partners/perl-backend-base:1.29

ADD lego_frontend.tar ${WORKPATH}

# rsyslogd
ADD configs/deploy_backend/rsyslog.d/nodejs.conf /etc/rsyslog.d/60-nodejs.conf

# nginx
ADD etc/nginx/                       /etc/nginx/

# logrotate
ADD configs/deploy_backend/logrotate.d/yandex-partners-frontend-extras /etc/logrotate.d/yandex-partners-frontend-extras
ADD etc/logrotate.d/yandex-partners-frontend /etc/logrotate.d/yandex-partners-frontend

# monitorings
ADD etc/hamster-client/ usr/share/
ADD etc/usr/bin/ usr/

#switchman
ADD etc/switchman/switchman.conf /etc/switchman.conf

# в облаке не работает резолв localhost https://st.yandex-team.ru/RTCSUPPORT-5383
ADD configs/deploy_backend/hosts /etc/hosts

# dirs
RUN mkdir -p /etc/partner \
  /var/log/switchman \
  /tmp/pages_dump \
  /tmp/pi_errors/sent \
  /var/cache/partner2/chi_file_cache/ \
  /var/cache/partner2/stat_cache \
  /var/lib/partner2 \
  /var/lib/push-client/crossdc-lbkx \
  /var/lib/push-client/main-logbroker \
  /var/log/partners.yandex.ru/api_logs/ \
  /var/log/yandex/partner \
  /var/log/yandex-partner-push-client \
  /var/run/partner2

# files
RUN touch \
  /var/log/nginx/frontend-node-v2call.log \
  /var/log/statbox/crossdc-lbkx-watcher.log \
  /var/log/statbox/main-logbroker-watcher.log \
  /var/log/yandex-partner-push-client/blocks-update-time.log \
  /var/log/yandex-partner-push-client/blocks-update-time-test.log \
  /var/log/yandex-partner-push-client/dsp.log \
  /var/log/yandex-partner-push-client/dsp-test.log \
  /var/log/yandex-partner-push-client/errorbooster.log \
  /var/log/yandex-partner-push-client/modadvert.log \
  /var/log/yandex-partner-push-client/modadvert-test.log \
  /var/log/yandex-partner-push-client/page-update-time.log \
  /var/log/yandex-partner-push-client/page-update-time-test.log

# chown
RUN chown -R partners:www-data \
  /tmp/pi_errors/ \
  /var/run/partner2/ \
  /var/cache/partner2/ \
  /var/lib/partner2/ \
  /var/log/partners.yandex.ru/ \
  /var/log/yandex-partner-push-client

RUN chown -R statbox:statbox /var/log/statbox/ \
  /var/lib/push-client/main-logbroker \
  /var/lib/push-client/crossdc-lbkx

RUN chown -R syslog:syslog \
  /var/log/nginx/frontend-node-v2call.log \
  /var/log/yandex

# chmod
RUN chmod -R 700 /var/cache/partner2/ \
  && chmod -R 755 /var/lib/partner2/ \
  && chmod -R 770 /var/log/partners.yandex.ru/ \
  && chmod -R 777 /var/log/switchman/ \
  && chmod -R 755 /var/log/yandex/ \
  && chmod -R 770 /var/run/partner2/ \
  && chmod -R 755 /etc/partner2-juggler-api/ \
  && chmod -R 770 /tmp/pi_errors/

RUN chmod 777 /var/log/statbox/ \
  /var/lib/push-client/main-logbroker \
  /var/lib/push-client/crossdc-lbkx \
  /var/log/yandex-partner-push-client

RUN chmod 644 \
  /etc/logrotate.d/yandex-partners-frontend \
  /etc/logrotate.d/yandex-partners-frontend-extras \
  /etc/partner2-juggler-api/config.json \
  /var/log/nginx/frontend-node-v2call.log

RUN mv /etc/cron.daily/logrotate /etc/cron.hourly/

RUN chmod 666 /var/log/statbox/* /var/log/yandex-partner-push-client/*

# common config
ADD configs/default/haproxy.conf /etc/partner/haproxy.conf

# Тар должен быть подготовлен до сборки образа
ADD perl_backend.tar ${WORKPATH}
# меняем название папки чтобы /bin/init_deploy_workload.pl правильно определял путь
RUN mv ./configs/test ./configs/testing

## FIXME
RUN ln -s /usr/share/partners/local/bin/starman /usr/bin/starman

## TODO: move higher?
ARG VERSION
RUN echo $VERSION > /version

# генерация cron.d для PerAPP PREPROD
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -I/usr/share/partners/local/lib/perl5 -MCron -e 'Cron->new( \
    config_path => "/usr/share/partners/configs/preprod/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    frontend_crons       => 1, \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-frontend-cron-preprod
RUN chmod 644 /opt/yandex-partners-frontend-cron-preprod

# генерация cron.d для PerAPP TS
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -I/usr/share/partners/local/lib/perl5 -MCron -e 'Cron->new( \
    config_path => "/usr/share/partners/configs/testing/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    frontend_crons       => 1, \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-frontend-cron-ts
RUN chmod 644 /opt/yandex-partners-frontend-cron-ts

# генерация cron.d для PerAPP PROD
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -I/usr/share/partners/local/lib/perl5 -MCron -e 'Cron->new( \
    config_path => "/usr/share/partners/configs/production/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    frontend_crons       => 1, \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-frontend-cron-prod
RUN chmod 644 /opt/yandex-partners-frontend-cron-prod

# генерация cron.d для PerAPP AUTOTEST
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -I/usr/share/partners/local/lib/perl5 -MCron -e 'Cron->new( \
    config_path => "/usr/share/partners/configs/autotest/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    frontend_crons       => 1, \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-frontend-cron-autotest
RUN chmod 644 /opt/yandex-partners-frontend-cron-autotest

# генерация cron.d для CronAPP PREPROD
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -MCron -I/usr/share/partners/local/lib/perl5 -e 'Cron->new( \
    config_path          => "/usr/share/partners/configs/preprod/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-cron-preprod
RUN chmod 644 /opt/yandex-partners-cron-preprod

# генерация cron.d для CronAPP TS
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -I/usr/share/partners/local/lib/perl5 -MCron -e 'Cron->new( \
    config_path          => "/usr/share/partners/configs/testing/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-cron-ts
RUN chmod 644 /opt/yandex-partners-cron-ts

# генерация cron.d для CronAPP PROD
RUN LAZY_LOAD=1 perl -I/usr/share/partners/lib -I/usr/share/partners/local/lib/perl5 -MCron -e 'Cron->new( \
    config_path          => "/usr/share/partners/configs/production/Application.json" \
 )->pre_run->generate_crond( \
    mail_to              => "partner2-cron\@yandex-team.ru", \
    user                 => "partners", \
    lib_path             => "/usr/share/partners/local/lib/perl5", \
    application_path     => "/usr/share/partners/lib", \
    logs_path            => "/var/log/partners.yandex.ru", \
    stdout_log_file_name => "partner2-cron-{path}-{method}.log", \
    deploy_environment   => 1 \
 )' > /opt/yandex-partners-cron-prod
RUN chmod 644 /opt/yandex-partners-cron-prod

USER partners

## Загрузка переводов из танкера
RUN ONLY_DOWNLOAD=1 perl -Ilib -Itmp/Yandex-Tanker/lib -I/usr/share/partners/local/lib/perl5 -MNet::INET6Glue ./bin/tanker-sync.pl

USER root
