Skip to content

Commit 88139c1

Browse files
committed
docs: add a Dockerfile
1 parent 0bbb6c1 commit 88139c1

3 files changed

Lines changed: 73 additions & 0 deletions

File tree

docker/Dockerfile

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
FROM nvidia/opengl:1.2-glvnd-devel-ubuntu22.04
2+
3+
WORKDIR /app
4+
5+
# Avoid buffering the server URL
6+
ENV PYTHONUNBUFFERED=1
7+
8+
# Prevent apt from prompting us about various decisions
9+
ENV DEBIAN_FRONTEND=noninteractive
10+
11+
# Allow driver to do rendering
12+
ENV NVIDIA_DRIVER_CAPABILITIES=all
13+
ENV NVIDIA_VISIBLE_DEVICES=all
14+
15+
# Install trame-slicer dependencies and pyenv build dependencies
16+
RUN apt-get update && apt-get install -y libturbojpeg \
17+
make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl git
18+
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
19+
20+
# Install Pyenv
21+
ENV HOME=/root
22+
ENV PYENV_DIR="${HOME}/.pyenv"
23+
RUN curl -fsSL https://pyenv.run | bash && \
24+
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc && \
25+
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc && \
26+
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc
27+
ENV PATH="${PYENV_DIR}/shims:${PYENV_DIR}/bin:${PATH}"
28+
29+
# Install SHARED Python3.10
30+
RUN PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.10.18 && \
31+
pyenv global 3.10.18 && \
32+
python -m pip install --upgrade pip
33+
34+
# Install trame-slicer
35+
RUN mkdir trame_slicer
36+
COPY . trame_slicer
37+
RUN pip install --no-cache-dir ./trame_slicer && \
38+
pip install --no-cache-dir https://github.com/KitwareMedical/trame-slicer/releases/download/v1.4.0/vtk_mrml-9.4.0-cp310-cp310-manylinux_2_35_x86_64.whl
39+
40+
RUN chmod +x /app/trame_slicer/docker_run.sh
41+
ENTRYPOINT ["/app/trame_slicer/docker_run.sh"]

docker/README

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
This builds an image launching the medical_viewer_app example in a container with GPU capacities, on 127.0.0.1:8080.
2+
3+
You need nvidia-container-toolkit and up to date NVIDIA drivers to run it.
4+
5+
To build it, use `docker build . -f {Dockerfile_path} -t trame-slicer`
6+
7+
The run command depends on the image:
8+
9+
- WSL
10+
11+
- To use EGL:
12+
13+
`docker run -p 8080:8080 -it -e MESA_D3D12_DEFAULT_ADAPTER_NAME=NVIDIA -e VTK_DEFAULT_OPENGL_WINDOW=vtkEGLRenderWindow -e LD_LIBRARY_PATH=/usr/lib/wsl/lib -v /usr/lib/wsl:/usr/lib/wsl trame-slicer`
14+
15+
- To use X server:
16+
17+
`docker run -p 8080:8080 -it -e MESA_D3D12_DEFAULT_ADAPTER_NAME=NVIDIA -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -e LD_LIBRARY_PATH=/usr/lib/wsl/lib -v /usr/lib/wsl:/usr/lib/wsl trame-slicer`
18+
19+
- Linux
20+
21+
- To use EGL:
22+
23+
`docker run -p 8080:8080 --runtime=nvidia -it -e VTK_DEFAULT_OPENGL_WINDOW=vtkEGLRenderWindow trame-slicer`
24+
25+
- To use X server:
26+
27+
`docker run -p 8080:8080 --runtime=nvidia -it -v {path to your Xauthority}:/root/.Xauthority --net host trame-slicer`

docker/docker_run.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
python trame_slicer/examples/medical_viewer_app.py --host 0.0.0.0
3+
4+
# Forcer le code de retour à 0
5+
exit 0

0 commit comments

Comments
 (0)