# Use python:3.8 as base image.
FROM python:3.8

# Install system packages.
RUN apt-get update \
  && apt-get install -y locales \
  && rm -rf /var/lib/apt/lists/*

# Configure locale.
RUN ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
RUN localedef -c -f UTF-8 -i en_US en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8

# Add local user.
RUN useradd -ms /bin/bash appuser

# Deploy sources.
WORKDIR /tiktok-statistics
COPY --chown=appuser:appuser . /tiktok-statistics

# Impersonate the local user.
USER appuser
ENV PATH="/home/appuser/.local/bin:${PATH}"

# Install python packages.
RUN pip install --upgrade pip \
  && python -m pip install pipenv==2020.11.15 matplotlib sentry-sdk

# Configure environment.
RUN if [ -f /tiktok-statistics/Pipfile.lock ]; then pipenv sync --system; fi

ARG SNOWFLAKE_ROLE
ARG SNOWFLAKE_WAREHOUSE
ARG SNOWFLAKE_PASSWORD
ARG SNOWFLAKE_USER
ARG SNOWFLAKE_ACCOUNT
ARG SNOWFLAKE_DATABASE
ARG SNOWFLAKE_SCHEMA
ARG SENTRY_DSN
ARG Environment

ENV SNOWFLAKE_ROLE=$SMOWFLAKE_ROLE
ENV SNOWFLAKE_WAREHOUSE=$SNOWFLAKE_WAREHOUSE
ENV SNOWFLAKE_PASSWORD=$SNOWFLAKE_PASSWORD
ENV SNOWFLAKE_USER=$SNOWFLAKE_USER
ENV SNOWFLAKE_ACCOUNT=$SNOWFLAKE_ACCOUNT
ENV SNOWFLAKE_DATABASE=$SNOWFLAKE_DATABASE
ENV SNOWFLAKE_SCHEMA=$SNOWFLAKE_SCHEMA
ENV SENTRY_DSN=$SENTRY_DSN
ENV Environment=$Environment

# Run the app.
RUN python /tiktok-statistics/tiktok_with_requests.py
