ARG BASE_IMAGE=nvidia/opengl:1.2-glvnd-runtime-ubuntu20.04
ARG NV_IMAGE=nvidia/opengl:1.2-glvnd-devel-ubuntu20.04

FROM ${NV_IMAGE} AS nv_image
FROM ${BASE_IMAGE}

LABEL maintainer="Jaswant Panchumarti <jaswant.panchumarti@kitware.com>"

ENV TZ "America/New_York"

# System package
COPY docker/scripts/install_base_packages.sh /opt/install_base_packages.sh
RUN /opt/install_base_packages.sh

# Download paraview binaries.
COPY docker/scripts/paraview.sh /opt/paraview.sh
RUN /opt/paraview.sh "egl"

# Download demo data
COPY docker/scripts/paraview_data.sh /opt/paraview_data.sh
RUN /opt/paraview_data.sh

COPY docker/scripts/setup_trame.sh /opt/setup_trame.sh
RUN /opt/setup_trame.sh 

# Put them at a place runtime can find.
COPY --from=nv_image /usr/lib/x86_64-linux-gnu/libOpenGL.so.0.0.0  /usr/lib/x86_64-linux-gnu/libOpenGL.so.0.0.0
COPY --from=nv_image /usr/lib/x86_64-linux-gnu/libOpenGL.so.0      /usr/lib/x86_64-linux-gnu/libOpenGL.so.0
COPY --from=nv_image /usr/lib/x86_64-linux-gnu/libOpenGL.so        /usr/lib/x86_64-linux-gnu/libOpenGL.so

# Copy the server script.
COPY docker/scripts/server.sh /opt/scripts/server.sh

# If spack package versions have changed, update the LD path here.
ENV PARAVIEW_DATA_DIR="/opt/paraview/data"
ENV PARAVIEW_RUNTIME_DIR="/opt/paraview/runtime"
ENV PARAVIEW_VENV_DIR="/opt/paraview/runtime/.pvenv"

# create non-root user
RUN useradd -ms /bin/bash  paraview-user
RUN chown -R paraview-user /opt
USER paraview-user

ENTRYPOINT [ "/bin/bash", "/opt/scripts/server.sh" ]
