FROM nvcr.io/nvidia/pytorch:23.02-py3

ARG DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
WORKDIR /

RUN apt-get update && apt-get install -y --no-install-recommends feh
RUN apt-get update && apt-get install -y --no-install-recommends python3-opencv
RUN pip uninstall -y opencv-python && pip install --no-cache "opencv-python<4.3"

# Show matplotlib images
RUN apt-get update && apt-get install -y --no-install-recommends python3-tk

# Update pip to allow installation of skelda in editable mode
RUN pip3 install --upgrade --no-cache-dir pip

# Install MMPose
ENV FORCE_CUDA="1"
ENV MMCV_WITH_OPS=1
RUN pip3 install --upgrade --no-cache-dir openmim
RUN mim install mmengine
RUN mim install "mmcv>=2,<2.2.0"
RUN mim install "mmdet>=3"
RUN mim install "mmpose>=1.1.0"
# Fix an error when importing mmpose
RUN pip3 install --upgrade --no-cache-dir numpy scipy
RUN git clone --depth=1 --branch=main https://github.com/open-mmlab/mmpose.git

# Download pretrained model
COPY scripts/utils_2d_pose.py /
RUN python3 -c "from utils_2d_pose import load_model; load_model();"
RUN python3 -c "from utils_2d_pose import load_wb_model; load_wb_model();"

# Fix an undefined symbol error with ompi
RUN echo "ldconfig" >> ~/.bashrc

# Install swig and later dependencies
RUN apt-get update && apt-get install -y --no-install-recommends build-essential
RUN apt-get update && apt-get install -y --no-install-recommends swig
RUN apt-get update && apt-get install -y --no-install-recommends libopencv-dev

COPY ./skelda/ /skelda/
RUN pip3 install --no-cache-dir -e /skelda/

WORKDIR /RapidPoseTriangulation/
CMD ["/bin/bash"]
