FROM python:3.7-buster

ARG APP
ARG PACKAGE
ARG SERVICE_PORT
ARG GCP_CREDENTIALS_FILE

# Fallback for missing env vars set in terraform
ENV GCP_CREDENTIALS_FILE_DEFAULT "/app/external-bigtable-reader.json"
ENV GCP_CREDENTIALS_FILE ${GCP_CREDENTIALS_FILE:-$GCP_CREDENTIALS_FILE_DEFAULT}
ENV GOOGLE_APPLICATION_CREDENTIALS ${GOOGLE_APPLICATION_CREDENTIALS:-$GCP_CREDENTIALS_FILE}

# Install the gcloud SDK pkg repo and keys
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" \
 | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && curl https://packages.cloud.google.com/apt/doc/apt-key.gpg \
 | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

RUN apt-get update
RUN apt-get install \
    gcc libc-dev python3-dev supervisor bash awscli jq netcat \
    sudo --no-install-recommends -y

# Copy requirements
COPY ./requirements.txt /app/requirements.txt

# Copy pip configs for private repo
RUN mkdir -p /root/.config/pip/
COPY pip.conf /root/.config/pip/
COPY .pypirc /root/

WORKDIR /app

# Install any needed packages specified in requirements.txt
RUN pip install --upgrade pip setuptools
RUN pip install -r requirements.txt

COPY . /app

RUN pip install -e .

COPY conf/supervisor/supervisord.conf /etc/supervisor/
COPY conf/supervisor/*.conf /etc/supervisor/conf.d/

EXPOSE ${SERVICE_PORT}

CMD ["/app/bin/entrypoint.sh"]
