-
Notifications
You must be signed in to change notification settings - Fork 1
/
Dockerfile
102 lines (102 loc) · 4.16 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
ARG BASE=pylib3d-mec-ginac:latest
FROM $BASE
ENV PORT=8000 \
MESA_INSTALL_PREFIX=/usr/local/mesa
RUN python -c "import sys; print(str(sys.version_info.major) + '.' + str(sys.version_info.minor))" > pyversion
## The next instructions are required for off-screen OpenGL rendering
# Install mesa dependencies
RUN apt install -y \
make \
cmake \
wget \
pkg-config \
llvm \
ninja-build \
flex bison \
libdrm-dev \
libwayland-dev \
wayland-protocols \
libwayland-egl-backend-dev \
xorg-dev \
libxcb-glx0-dev \
xcb \
libx11-xcb-dev \
libxcb-dri2-0-dev \
libxcb-dri3-dev \
libxcb-present-dev \
libxcb-sync-dev \
libxshmfence-dev \
libxxf86vm-dev \
libxcb-xfixes0 \
libxcb-randr0 \
libxrandr-dev \
&& pip install meson Mako>=0.8.0
# Install mesa
RUN wget -nv https://mesa.freedesktop.org/archive/mesa-19.1.0.tar.xz -O mesa.tar -o /dev/null
#RUN wget -nv https://mesa.freedesktop.org/archive/mesa-19.3.2.tar.xz -O mesa.tar -o /dev/null
RUN tar -xf mesa.tar && rm mesa.tar \
# && mv mesa-19.3.2 mesa \
&& mv mesa-19.1.0 mesa \
&& cd mesa \
&& mkdir build \
&& meson build \
-Dosmesa=gallium \
-Dgallium-drivers=swrast \
-Ddri-drivers=[] \
-Dvulkan-drivers=[] \
-Dprefix=${MESA_INSTALL_PREFIX} \
&& ninja -C build \
&& ninja -C build install \
&& cd .. \
&& rm -rf mesa
# Uninstall vtk pip version
RUN pip uninstall -y vtk
# Get VTK source code
RUN git clone https://gitlab.kitware.com/vtk/vtk.git VTK
# Configure VTK
RUN export PYTHON_VERSION=$(cat pyversion) \
&& export MESA_LIB_DIR=${MESA_INSTALL_PREFIX}/lib/x86_64-linux-gnu \
&& export MESA_INCLUDE_DIR=${MESA_INSTALL_PREFIX}/include \
&& mkdir VTK-build \
&& cd VTK-build \
&& cmake \
# general options
-DBUILD_SHARED_LIBS=ON \
-DBUILD_TESTING=OFF \
-DVTK_FORBID_DOWNLOADS=ON \
-DCMAKE_BUILD_TYPE=Release \
# python wrapping options
-DVTK_WRAP_PYTHON=ON \
-DVTK_PYTHON_VERSION=3 \
-DPYTHON_EXECUTABLE:PATH=/usr/bin/python \
-DPYTHON_INCLUDE_DIR:PATH=/usr/include/python${PYTHON_VERSION} \
-DPYTHON_LIBRARY:PATH=/usr/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m-x86_64-linux-gnu/libpython${PYTHON_VERSION}.so \
# mesa options
-DVTK_OPENGL_HAS_OSMESA=ON \
-DVTK_USE_X=OFF \
-DOPENGL_INCLUDE_DIR:PATH=${MESA_INCLUDE_DIR} \
-DOPENGL_gl_LIBRARY:FILEPATH=${MESA_LIB_DIR}/libGL.so \
-DOPENGL_glu_LIBRARY:FILEPATH=${MESA_LIB_DIR}/libGLU.so \
-DOPENGL_xmesa_INCLUDE_DIR:PATH=${MESA_INCLUDE_DIR} \
-DOSMESA_INCLUDE_DIR:PATH=${MESA_INCLUDE_DIR} \
-DOSMESA_LIBRARY:FILEPATH=${MESA_LIB_DIR}/libOSMesa.so \
/VTK/
# Compile VTK and install it
RUN cd VTK-build \
&& make -j 4 \
&& make install \
&& cd .. \
&& rm -rf VTK VTK-build
# This will update dynamic libraries and save the lib path directory into a file
# Needed to adust PYTHONPATH & LD_LIBRARY_PATH on the CMD line
RUN ldconfig \
&& rm pyversion \
&& echo ${MESA_INSTALL_PREFIX}/lib/x86_64-linux-gnu > mesalibdir
# Install additional packages for Python
RUN pip install matplotlib pandas
# Copy empty notebook
COPY Untitled.ipynb /pylib3d-mec-ginac/examples/Untitled.ipynb
# Default entrypoint (jupyter server)
CMD export PYTHONPATH=/usr/local/lib/python/site-packages \
&& export LD_LIBRARY_PATH=$(cat mesalibdir) \
&& jupyter notebook --no-browser --port=$PORT --ip=$(hostname) --allow-root -y --notebook-dir=/pylib3d-mec-ginac/examples --NotebookApp.token='' --NotebookApp.password=''