Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docker] Add Dockerfiles for Rocky 9 and handle Qt 6 installation #2626

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 0 additions & 79 deletions docker/Dockerfile_centos

This file was deleted.

67 changes: 0 additions & 67 deletions docker/Dockerfile_centos_deps

This file was deleted.

90 changes: 90 additions & 0 deletions docker/Dockerfile_rocky
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
ARG MESHROOM_VERSION
ARG AV_VERSION
ARG CUDA_VERSION
ARG ROCKY_VERSION
FROM alicevision/meshroom-deps:${MESHROOM_VERSION}-av${AV_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION}
LABEL maintainer="AliceVision Team alicevision-team@googlegroups.com"

# Execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
# docker run -it --runtime nvidia -p 2222:22 --name meshroom -v</path/to/your/data>:/data alicevision/meshroom:develop-av2.2.8.develop-ubuntu20.04-cuda11.0
# ssh -p 2222 -X root@<docker host> /opt/Meshroom_bundle/Meshroom # Password is 'meshroom'

RUN dnf install -y patchelf

ENV MESHROOM_DEV=/opt/Meshroom \
MESHROOM_BUILD=/tmp/Meshroom_build \
MESHROOM_BUNDLE=/opt/Meshroom_bundle \
AV_INSTALL=/opt/AliceVision_install \
QT_DIR=/opt/Qt/6.6.3/gcc_64 \
PATH="${PATH}:${MESHROOM_BUNDLE}"

COPY *.txt *.md *.py ${MESHROOM_DEV}/
COPY ./docs ${MESHROOM_DEV}/docs
COPY ./meshroom ${MESHROOM_DEV}/meshroom
COPY ./tests ${MESHROOM_DEV}/tests
COPY ./bin ${MESHROOM_DEV}/bin

WORKDIR ${MESHROOM_DEV}

RUN python3 -m pip install --upgrade --force-reinstall cx_Freeze==6.9

RUN python3 setup.py install_exe -d "${MESHROOM_BUNDLE}" && \
find ${MESHROOM_BUNDLE} -name "*Qt6Web*" -delete && \
find ${MESHROOM_BUNDLE} -name "*Qt6Designer*" -delete && \
rm -rf ${MESHROOM_BUNDLE}/lib/PySide6/typesystems/ \
${MESHROOM_BUNDLE}/lib/PySide6/examples/ \
${MESHROOM_BUNDLE}/lib/PySide6/include/ \
${MESHROOM_BUNDLE}/lib/PySide6/Qt/translations/ \
${MESHROOM_BUNDLE}/lib/PySide6/Qt/resources/ \
${MESHROOM_BUNDLE}/lib/PySide6/QtWeb* \
${MESHROOM_BUNDLE}/lib/PySide6/rcc \
${MESHROOM_BUNDLE}/lib/PySide6/designer

WORKDIR ${MESHROOM_BUILD}

# Build Meshroom plugins
RUN cmake "${MESHROOM_DEV}" -DALICEVISION_ROOT="${AV_INSTALL}" -DCMAKE_INSTALL_PREFIX="${MESHROOM_BUNDLE}/qtPlugins"
RUN make "-j$(nproc)" QtAliceVision
RUN make "-j$(nproc)" && \
rm -rf "${MESHROOM_BUILD}" "${MESHROOM_DEV}" \
${MESHROOM_BUNDLE}/aliceVision/share/doc \
${MESHROOM_BUNDLE}/aliceVision/share/eigen3 \
${MESHROOM_BUNDLE}/aliceVision/share/fonts \
${MESHROOM_BUNDLE}/aliceVision/share/lemon \
${MESHROOM_BUNDLE}/aliceVision/share/libraw \
${MESHROOM_BUNDLE}/aliceVision/share/man/ \
aliceVision/share/pkgconfig

# Download meshroomNodes and the models, install the requirements and set all the variables
WORKDIR ${MESHROOM_BUNDLE}
RUN git clone https://github.com/alicevision/meshroomNodes.git meshroomNodes
RUN pip install --upgrade setuptools
RUN pip install -r meshroomNodes/requirements.txt
RUN rm meshroomNodes/requirements.txt meshroomNodes/setup.py
ENV MESHROOM_NODES_PATH="${MESHROOM_BUNDLE}/meshroomNodes/meshroom/nodes"
ENV PYTHONPATH="${PYTHONPATH}:${MESHROOM_BUNDLE}/meshroomNodes"

RUN git clone https://gitlab.com/alicevision/imagepromptnnmodels.git imagePromptNNModels
RUN rm imagePromptNNModels/.gitattributes
ENV RDS_RECOGNITION_MODEL_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/ram_plus_swin_large_14m.pth"
ENV RDS_DETECTION_CONFIG_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/models/GroundingDINO_SwinT_OGC.py"
ENV RDS_DETECTION_MODEL_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/groundingdino_swint_ogc.pth"
ENV RDS_SEGMENTATION_MODEL_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/sam_vit_h_4b8939.pth"
ENV RDS_TOKENIZER_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/tokenizer"
ENV TRANSFORMERS_OFFLINE="TRUE"

# Enable SSH X11 forwarding, needed when the Docker image
# is run on a remote machine
RUN dnf install -y openssh openssh-clients openssh-server xorg-x11-xauth
RUN systemctl enable sshd && \
mkdir -p /run/sshd && \
ssh-keygen -A

RUN sed -i "s/^.*X11Forwarding.*$/X11Forwarding yes/; s/^.*X11UseLocalhost.*$/X11UseLocalhost no/; s/^.*PermitRootLogin prohibit-password/PermitRootLogin yes/; s/^.*X11UseLocalhost.*/X11UseLocalhost no/;" /etc/ssh/sshd_config
RUN echo "root:meshroom" | chpasswd

WORKDIR /root

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

46 changes: 46 additions & 0 deletions docker/Dockerfile_rocky_deps
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
ARG AV_VERSION
ARG CUDA_VERSION
ARG ROCKY_VERSION
FROM alicevision/alicevision:${AV_VERSION}-rocky${ROCKY_VERSION}-cuda${CUDA_VERSION}
LABEL maintainer="AliceVision Team alicevision-team@googlegroups.com"

# Execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0))
# docker run -it --runtime=nvidia meshroom

ENV MESHROOM_DEV=/opt/Meshroom \
MESHROOM_BUILD=/tmp/Meshroom_build \
QT_DIR=/opt/Qt/6.6.3/gcc_64 \
QT_CI_LOGIN=alicevisionjunk@gmail.com \
QT_CI_P=azerty1.

# Install libs needed by Qt
RUN dnf update -y
RUN dnf install -y flex fontconfig freetype
RUN dnf install -y glib2-devel libICE
RUN dnf install -y libX11 libXext libXi libXrender libSM
RUN dnf install -y libXt-devel mesa-libGLU-devel mesa-libOSMesa-devel mesa-libGL-devel mesa-libEGL-devel
RUN dnf install -y zlib-devel systemd openssh-server
RUN dnf install -y libxcb-devel \
libxkbcommon-devel \
libxkbcommon-x11-devel \
xcb-util-wm xcb-util-image \
xcb-util-keysyms \
xcb-util-renderutil

# Install Qt (to build plugins)
WORKDIR /tmp/qt
COPY dl/qt.run /tmp/qt
RUN chmod +x qt.run
RUN ./qt.run --verbose --email ${QT_CI_LOGIN} --password ${QT_CI_P} --accept-obligations --accept-licenses \
--default-answer --platform minimal --auto-answer installationErrorWithCancel=Ignore --no-force-installations --no-default-installations --confirm-command \
install qt.qt6.663.gcc_64 qt.qt6.663.addons.qtcharts qt.qt6.663.addons.qt3d
RUN rm qt.run

# Strip sections containing ".note.ABI.tag" from .so: https://github.com/Microsoft/WSL/issues/3023
RUN find ${QT_DIR}/lib/ -name '*.so' | xargs strip --remove-section=.note.ABI-tag

COPY ./*requirements.txt ./setup.py ${MESHROOM_DEV}/

# Install Meshroom requirements and freeze bundle
WORKDIR "${MESHROOM_DEV}"
RUN python3 -m pip install -r dev_requirements.txt -r requirements.txt
46 changes: 29 additions & 17 deletions docker/Dockerfile_ubuntu
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ ENV MESHROOM_DEV=/opt/Meshroom \
MESHROOM_BUILD=/tmp/Meshroom_build \
MESHROOM_BUNDLE=/opt/Meshroom_bundle \
AV_INSTALL=/opt/AliceVision_install \
QT_DIR=/opt/Qt/5.15.2/gcc_64 \
PATH="${PATH}:${MESHROOM_BUNDLE}" \
OPENIMAGEIO_LIBRARY=/opt/AliceVision_install/lib
QT_DIR=/opt/Qt/6.6.3/gcc_64 \
PATH="${PATH}:${MESHROOM_BUNDLE}"

COPY *.txt *.md *.py ${MESHROOM_DEV}/
COPY ./docs ${MESHROOM_DEV}/docs
Expand All @@ -26,17 +25,16 @@ COPY ./bin ${MESHROOM_DEV}/bin
WORKDIR ${MESHROOM_DEV}

RUN python3 setup.py install_exe -d "${MESHROOM_BUNDLE}" && \
find ${MESHROOM_BUNDLE} -name "*Qt5Web*" -delete && \
find ${MESHROOM_BUNDLE} -name "*Qt5Designer*" -delete && \
rm -rf ${MESHROOM_BUNDLE}/lib/PySide2/typesystems/ \
${MESHROOM_BUNDLE}/lib/PySide2/examples/ \
${MESHROOM_BUNDLE}/lib/PySide2/include/ \
${MESHROOM_BUNDLE}/lib/PySide2/Qt/translations/ \
${MESHROOM_BUNDLE}/lib/PySide2/Qt/resources/ \
${MESHROOM_BUNDLE}/lib/PySide2/QtWeb* \
${MESHROOM_BUNDLE}/lib/PySide2/pyside2-lupdate \
${MESHROOM_BUNDLE}/lib/PySide2/rcc \
${MESHROOM_BUNDLE}/lib/PySide2/designer
find ${MESHROOM_BUNDLE} -name "*Qt6Web*" -delete && \
find ${MESHROOM_BUNDLE} -name "*Qt6Designer*" -delete && \
rm -rf ${MESHROOM_BUNDLE}/lib/PySide6/typesystems/ \
${MESHROOM_BUNDLE}/lib/PySide6/examples/ \
${MESHROOM_BUNDLE}/lib/PySide6/include/ \
${MESHROOM_BUNDLE}/lib/PySide6/Qt/translations/ \
${MESHROOM_BUNDLE}/lib/PySide6/Qt/resources/ \
${MESHROOM_BUNDLE}/lib/PySide6/QtWeb* \
${MESHROOM_BUNDLE}/lib/PySide6/rcc \
${MESHROOM_BUNDLE}/lib/PySide6/designer

WORKDIR ${MESHROOM_BUILD}

Expand All @@ -53,8 +51,23 @@ RUN make "-j$(nproc)" && \
${MESHROOM_BUNDLE}/aliceVision/share/man/ \
aliceVision/share/pkgconfig

# Copy missing libassimpsceneimport.so
COPY dl/libassimpsceneimport.so ${MESHROOM_BUNDLE}/lib/PySide2/Qt/plugins/sceneparsers
# Download meshroomNodes and the models, install the requirements and set all the variables
WORKDIR ${MESHROOM_BUNDLE}
RUN git clone https://github.com/alicevision/meshroomNodes.git meshroomNodes
RUN pip install --upgrade setuptools
RUN pip install -r meshroomNodes/requirements.txt
RUN rm meshroomNodes/requirements.txt meshroomNodes/setup.py
ENV MESHROOM_NODES_PATH="${MESHROOM_BUNDLE}/meshroomNodes/meshroom/nodes"
ENV PYTHONPATH="${PYTHONPATH}:${MESHROOM_BUNDLE}/meshroomNodes"

RUN git clone https://gitlab.com/alicevision/imagepromptnnmodels.git imagePromptNNModels
RUN rm imagePromptNNModels/.gitattributes
ENV RDS_RECOGNITION_MODEL_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/ram_plus_swin_large_14m.pth"
ENV RDS_DETECTION_CONFIG_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/models/GroundingDINO_SwinT_OGC.py"
ENV RDS_DETECTION_MODEL_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/groundingdino_swint_ogc.pth"
ENV RDS_SEGMENTATION_MODEL_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/sam_vit_h_4b8939.pth"
ENV RDS_TOKENIZER_PATH="${MESHROOM_BUNDLE}/imagePromptNNModels/models/tokenizer"
ENV TRANSFORMERS_OFFLINE="TRUE"

# Enable SSH X11 forwarding, needed when the Docker image
# is run on a remote machine
Expand All @@ -69,4 +82,3 @@ WORKDIR /root

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Loading
Loading