FROM public.ecr.aws/docker/library/python:3.9.14-slim-bullseye

ENV APP_USER=app
ENV APP_DIR=/home/${APP_USER}/code
ENV APP_SHARED_DIR=${APP_DIR}/shared

RUN apt-get update && apt-get install -y curl unzip
RUN useradd -m $APP_USER && mkdir -p $APP_SHARED_DIR && chown "${APP_USER}:${APP_USER}" -R $APP_DIR
USER $APP_USER

ENV PATH="/home/${APP_USER}/.local/bin:${PATH}"

# LAB 3: UNCOMMENT BELOW (dockerfile)
# WORKDIR $APP_SHARED_DIR

# # switch back to root user temporarily to grab and unzip shared lib files.
# USER root
# ENV COMMIT_ID="e0b2979bff525be25ac7f9a11f0066cf078fbb24"
# ADD https://github.com/aws-samples/aws-saas-factory-saas-microservices-workshop/archive/${COMMIT_ID}.zip ${COMMIT_ID}.zip

# RUN unzip ${COMMIT_ID}.zip \
#     && mv aws-saas-factory-saas-microservices-workshop-${COMMIT_ID}/lib/shared/* . \
#     && rm -rf ${COMMIT_ID}.zip aws-saas-factory-saas-microservices-workshop-${COMMIT_ID}
# USER $APP_USER

# RUN pip install --user --no-cache-dir --requirement $APP_SHARED_DIR/requirements.txt

WORKDIR $APP_DIR
COPY ./code/requirements.txt ${APP_DIR}/requirements.txt

RUN pip install --user --no-cache-dir --requirement ${APP_DIR}/requirements.txt
COPY ./code $APP_DIR

HEALTHCHECK CMD curl --fail http://localhost:8080/orders/health || exit 1
CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:8080", "--log-level=debug"]