# Use python 3.12 as base image.
FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:python312 as base

USER root

# Run updates and clean up in a single step to optimize layers.
RUN apt-get -y update \
    && apt-get -y upgrade --no-install-recommends \
    && apt-get -y clean \
    && rm -rf /var/lib/apt/lists/*

USER worker

# Use application directory.
WORKDIR /var/app

# Create and configure venv.
RUN python3 -m venv ./.virtualenv
ENV PATH="/var/app/.virtualenv/bin:${PATH}"

# Install dependencies.
COPY --chown=worker:worker requirements.txt ./
RUN pip install --upgrade pip setuptools \
    && pip install wheel && pip install -r ./requirements.txt

# Deploy application.
COPY --chown=worker:worker config.py ./
COPY --chown=worker:worker quarterly_oa_account_review.py ./
COPY --chown=worker:worker queries.py ./
COPY --chown=worker:worker s3_handler.py ./
COPY --chown=worker:worker sql_handler.py ./

FROM base AS deploy

# Configure environment variables.
ENV AR_MYSQL_HOST="" \
  AR_MYSQL_USER="" \
  AR_MYSQL_DATABASE=""

# Configure entrypoint.
CMD ["python", "/var/app/quarterly_oa_account_review.py"]

FROM base AS lint-and-test

COPY --chown=worker:worker .flake8 ./
COPY --chown=worker:worker lint-and-test.sh ./
COPY --chown=worker:worker requirements-dev.txt ./

RUN pip install -r ./requirements-dev.txt

ENTRYPOINT ["bash", "/var/app/lint-and-test.sh"]
