# Dockerfile
ARG PARENT_IMAGE=086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-parent-images:python311
FROM $PARENT_IMAGE AS base

WORKDIR /var/venv
ENV VIRTUAL_ENV=/var/venv
RUN python3.11 -m venv ${VIRTUAL_ENV}
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN pip install --no-cache-dir --upgrade pip setuptools
WORKDIR /var/app
COPY --chown=worker:worker requirements.txt ./
USER root
RUN apt-get -y update \
    && apt-get -y install gcc
USER worker
RUN pip install --no-cache-dir -r requirements.txt
USER root
RUN apt-get -y remove --purge gcc \
    && apt-get -y autoremove \
    && apt-get -y clean \
    && rm -rf /var/lib/apt/lists/*
USER worker

FROM base AS deploy
COPY --chown=worker:worker territories ./territories
COPY --chown=worker:worker application.py uwsgi.ini ./
COPY --chown=worker:worker uwsgi-start.sh /
EXPOSE 8080
ENTRYPOINT ["/uwsgi-start.sh"]

FROM base AS dev
COPY --chown=worker:worker requirements-dev.txt ./
RUN pip install --no-cache-dir -r requirements.txt -r requirements-dev.txt
COPY --chown=worker:worker dev.py ./
COPY --chown=worker:worker territories ./territories
COPY --chown=worker:worker application.py ./
EXPOSE 5001
ENTRYPOINT ["python", "dev.py"]

FROM dev AS lint-and-test
COPY --chown=worker:worker tests ./tests
COPY --chown=worker:worker .flake8 dev.py docker-compose.yml lint-and-test.sh ./
ENTRYPOINT ["./lint-and-test.sh"]
