FROM registry.yandex.net/tools/raw-ubuntu:20.04 as python

# 'build' stage
FROM python as python-build-stage

ARG BUILD_ENVIRONMENT=production

RUN apt-get update && apt-get install --no-install-recommends -y \
  build-essential \
  libpq-dev \
  libcurl4-openssl-dev \
  libssl-dev \
  python3.8-dev \
  python3-pip \
  python3-setuptools

COPY ./requirements .

RUN pip3 wheel --wheel-dir /usr/src/app/wheels \
  -r ${BUILD_ENVIRONMENT}.txt


# 'run' stage
FROM python as python-run-stage

ARG BUILD_ENVIRONMENT=dev
ARG APP_HOME=/app

ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV BUILD_ENV ${BUILD_ENVIRONMENT}

WORKDIR ${APP_HOME}

RUN apt-get update && apt-get install --no-install-recommends -y \
  # helpful tools
  procps net-tools htop mc \
  # python dependencies
  python3-pip \
  # psycopg2 dependencies \
  postgresql-client libpq-dev \
  # OpenSSl
  libcurl4-openssl-dev libssl-dev \
  # Translations dependencies
  gettext \
  # Common CA certificates
  ca-certificates \
  # cleaning up unused files
  && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
  && rm -rf /var/lib/apt/lists/*

RUN curl https://crls.yandex.net/allCAs.pem > /etc/ssl/certs/allCAs.pem \
  && cat /etc/ssl/certs/allCAs.pem >> /etc/ssl/certs/ca-certificates.crt

RUN mkdir -p ${APP_HOME}/.postgres/ \
  && cp /etc/ssl/certs/allCAs.pem ${APP_HOME}/.postgres/root.crt

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

COPY --from=python-build-stage /usr/src/app/wheels  /wheels/

RUN pip3 install --no-cache-dir --no-index --find-links=/wheels/ /wheels/* \
  && rm -rf /wheels/

COPY ./compose/production/django/start /start
RUN sed -i 's/\r$//g' /start
RUN chmod +x /start

COPY ./compose/production/django/admin/start /start-admin
RUN sed -i 's/\r$//g' /start-admin
RUN chmod +x /start-admin

COPY ./compose/production/django/external/start /start-external
RUN sed -i 's/\r$//g' /start-external
RUN chmod +x /start-external

COPY ./compose/production/django/celery/worker/start /start-celeryworker
RUN sed -i 's/\r$//g' /start-celeryworker
RUN chmod +x /start-celeryworker

COPY ./compose/production/django/celery/beat/start /start-celerybeat
RUN sed -i 's/\r$//g' /start-celerybeat
RUN chmod +x /start-celerybeat

COPY ./compose/production/django/celery/flower/start /start-flower
RUN sed -i 's/\r$//g' /start-flower
RUN chmod +x /start-flower


COPY . ${APP_HOME}
