FROM 086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:python313 AS base

USER root

RUN apt update
RUN apt upgrade -y

RUN apt install -y wget curl tar zip openssl locales build-essential
RUN apt install -y default-mysql-client
RUN rm -rf /var/lib/apt/lists/*

# Explicitly set locale and related env vars to use en_US.UTF-8
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US:en
ENV LC_ALL=en_US.UTF-8

# 2. Prepare python environment

USER worker
WORKDIR /var/app
ENV PATH="/var/app/.venv/bin:${PATH}"

COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

COPY pyproject.toml /var/app/pyproject.toml
COPY uv.lock /var/app/uv.lock
RUN uv lock --check

# IS_DEV indicates image for development environment
ARG IS_DEV=false
RUN if [ "$IS_DEV" = "true" ] ; then \
      uv sync --locked --dev ; \
    else \
      uv sync --locked ; \
      uv cache clean ; \
    fi

# 3. install the application

COPY dim_refresh_etl /var/app/dim_refresh_etl/
COPY Makefile /var/app/
COPY README.md /var/app/
COPY conf /var/app/conf/
COPY bin /var/app/bin/

RUN if [ "$IS_DEV" = "true" ] ; then \
      uv pip install -e . ; \
    else \
      uv pip install . ; \
      uv cache clean --force ; \
    fi

ENTRYPOINT ["uv", "run", "--no-sync"]

FROM base AS dev

COPY .flake8 /var/app/.flake8
COPY tests /var/app/tests/

FROM base AS production

# Run supervisord
CMD  ["supervisord", "-c", "conf/supervisor.conf"]
EXPOSE 9001
