From 29ef8d093e25ae8fe25b4084ddabd4b0643a6686 Mon Sep 17 00:00:00 2001 From: Praveen Selvaraj Date: Fri, 11 Apr 2025 01:09:05 +0100 Subject: [PATCH 1/3] docker stuff --- .dockerignore | 2 ++ Dockerfile | 31 +++++++++++++++++++++++++++++++ docker_build.sh | 4 ++++ run_docker_container.sh | 5 +++++ 4 files changed, 42 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100755 docker_build.sh create mode 100755 run_docker_container.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0baa658 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ + +.venv diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..914da68 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 + +ENV DEBIAN_FRONTEND=noninteractive +# Set PATH early so that uv is found in later commands. +ENV PATH="/root/.local/bin:${PATH}" + +# Install system tools, Python 3.11, pip, etc. in one RUN. +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + software-properties-common \ + curl \ + git && \ + add-apt-repository ppa:deadsnakes/ppa -y && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + python3.11 \ + python3.11-distutils \ + python3.11-dev && \ + rm -rf /var/lib/apt/lists/* && \ + curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 && \ + update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1 && \ + python -m pip install --upgrade pip + +WORKDIR /open_duck +# Copy your entire project. (Make sure you have a proper .dockerignore to exclude unneeded files.) +COPY . . + +# Combine uv installation and virtual environment sync in one RUN. +RUN curl -LsSf https://astral.sh/uv/install.sh | sh && uv sync --frozen + +CMD ["bash"] diff --git a/docker_build.sh b/docker_build.sh new file mode 100755 index 0000000..b8b852f --- /dev/null +++ b/docker_build.sh @@ -0,0 +1,4 @@ +#!/bin/bash +IMAGE_NAME="open_duck" + +docker build --network=host -t $IMAGE_NAME . diff --git a/run_docker_container.sh b/run_docker_container.sh new file mode 100755 index 0000000..0de755b --- /dev/null +++ b/run_docker_container.sh @@ -0,0 +1,5 @@ +#!/bin/bash +IMAGE_NAME="open_duck" + +docker run --gpus all --rm -it --network=host \ + -v $(pwd)/:/open_duck $IMAGE_NAME From a21fcc49f01810b1050fc77a9556aeb945ae4399 Mon Sep 17 00:00:00 2001 From: Praveen Selvaraj Date: Fri, 11 Apr 2025 02:22:46 +0100 Subject: [PATCH 2/3] docker reararange; inference check --- Dockerfile => docker/Dockerfile | 15 ++++++++++++--- docker/docker_build.sh | 4 ++++ docker/run_docker_container.sh | 11 +++++++++++ docker_build.sh | 4 ---- run_docker_container.sh | 5 ----- 5 files changed, 27 insertions(+), 12 deletions(-) rename Dockerfile => docker/Dockerfile (61%) create mode 100755 docker/docker_build.sh create mode 100755 docker/run_docker_container.sh delete mode 100755 docker_build.sh delete mode 100755 run_docker_container.sh diff --git a/Dockerfile b/docker/Dockerfile similarity index 61% rename from Dockerfile rename to docker/Dockerfile index 914da68..98c9444 100644 --- a/Dockerfile +++ b/docker/Dockerfile @@ -1,15 +1,23 @@ FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive -# Set PATH early so that uv is found in later commands. +# Set PATH and LD_PRELOAD so that uv and the preloading are set system-wide. ENV PATH="/root/.local/bin:${PATH}" +ENV LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libstdc++.so.6" -# Install system tools, Python 3.11, pip, etc. in one RUN. +# Install system tools, enable Universe repository, and install X11/GL dependencies. RUN apt-get update && \ apt-get install -y --no-install-recommends \ software-properties-common \ curl \ git && \ + add-apt-repository universe && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + libx11-6 \ + libgl1-mesa-glx \ + libglx-mesa0 && \ + # Now add the deadsnakes PPA for Python 3.11 add-apt-repository ppa:deadsnakes/ppa -y && \ apt-get update && \ apt-get install -y --no-install-recommends \ @@ -22,10 +30,11 @@ RUN apt-get update && \ python -m pip install --upgrade pip WORKDIR /open_duck -# Copy your entire project. (Make sure you have a proper .dockerignore to exclude unneeded files.) +# Copy the entire repository; use a proper .dockerignore to exclude unneeded files. COPY . . # Combine uv installation and virtual environment sync in one RUN. RUN curl -LsSf https://astral.sh/uv/install.sh | sh && uv sync --frozen CMD ["bash"] + diff --git a/docker/docker_build.sh b/docker/docker_build.sh new file mode 100755 index 0000000..e2b665e --- /dev/null +++ b/docker/docker_build.sh @@ -0,0 +1,4 @@ +#!/bin/bash +IMAGE_NAME="open_duck" + +docker build --network=host -t $IMAGE_NAME -f Dockerfile .. diff --git a/docker/run_docker_container.sh b/docker/run_docker_container.sh new file mode 100755 index 0000000..74b473f --- /dev/null +++ b/docker/run_docker_container.sh @@ -0,0 +1,11 @@ +#!/bin/bash +IMAGE_NAME="open_duck" + +# Allow local connections to X server (optional; adjust as needed) +# xhost +local:root + +docker run --gpus all --rm -it --network=host \ + -v /tmp/.X11-unix:/tmp/.X11-unix \ + -e DISPLAY=$DISPLAY \ + -v $(pwd)/../:/open_duck \ + $IMAGE_NAME diff --git a/docker_build.sh b/docker_build.sh deleted file mode 100755 index b8b852f..0000000 --- a/docker_build.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -IMAGE_NAME="open_duck" - -docker build --network=host -t $IMAGE_NAME . diff --git a/run_docker_container.sh b/run_docker_container.sh deleted file mode 100755 index 0de755b..0000000 --- a/run_docker_container.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -IMAGE_NAME="open_duck" - -docker run --gpus all --rm -it --network=host \ - -v $(pwd)/:/open_duck $IMAGE_NAME From 40235476558d6214dbf0ee5809b7f2e54fc33c72 Mon Sep 17 00:00:00 2001 From: Praveen Selvaraj Date: Fri, 11 Apr 2025 02:53:51 +0100 Subject: [PATCH 3/3] handle lack of uv.lock --- docker/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 98c9444..2c69a95 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -33,8 +33,9 @@ WORKDIR /open_duck # Copy the entire repository; use a proper .dockerignore to exclude unneeded files. COPY . . -# Combine uv installation and virtual environment sync in one RUN. -RUN curl -LsSf https://astral.sh/uv/install.sh | sh && uv sync --frozen +# Install uv, then ensure the uv lockfile exists (create if not) and sync the environment. +RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \ + if [ ! -f uv.lock ]; then uv lock; fi && \ + uv sync --frozen CMD ["bash"] -