# Dockerfile
ARG  AWS_ACCOUNT=086679231553
FROM ${AWS_ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:python313 AS base

WORKDIR /var/app

USER root

# Update and install common packages
RUN apt-get -y update \
  && apt-get -y upgrade \
  && apt-get -y install gcc \
  && apt-get -y clean \
  && rm -rf /var/lib/apt/lists/*

# Copy app
ENV VIRTUAL_ENV /var/venv
RUN mkdir ${VIRTUAL_ENV}

# Configure venv
RUN python3.13 -m venv ${VIRTUAL_ENV}
ENV PATH "$VIRTUAL_ENV/bin:$PATH"
RUN ${VIRTUAL_ENV}/bin/pip install --upgrade pip setuptools

# Copy app
COPY . /var/app
# Install requirements
RUN ${VIRTUAL_ENV}/bin/pip install -I -r /var/app/requirements.txt
RUN chmod -R 755 /var/app/scripts/

#
FROM base AS deploy
RUN mkdir /var/app/.snowflake
RUN chmod 777 /var/app/.snowflake
ENV SNOWFLAKE_HOME=/var/app/
RUN apt-get update && apt-get install -y gcc
RUN ${VIRTUAL_ENV}/bin/pip install uwsgi==2.0.31
RUN useradd uwsgi -s /bin/false
RUN mkdir /var/log/uwsgi
RUN chown -R uwsgi:uwsgi /var/log/uwsgi

RUN chown worker:worker ${VIRTUAL_ENV} && \
    chown worker:worker -R /var/app

USER worker

ENTRYPOINT ["/var/app/scripts/uwsgi-start.sh"]
EXPOSE     8080

#################################
### Build image for unit-lint ###
#################################
FROM base AS unit-lint

# Install dev/test requirements
RUN ${VIRTUAL_ENV}/bin/pip install -I -r /var/app/requirements-dev.txt

ENTRYPOINT ["scripts/unit-lint.sh"]

###########################
### Build image for dev ###
###########################
FROM base AS dev

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

# Enables prints in python to flush to stdout
ENV PYTHONUNBUFFERED 1

# Start dev server
ENTRYPOINT  ["/var/venv/bin/python"]
CMD         ["dev.py", "2>&1"]
