|
1 | | -ARG BASE_IMAGE=ghcr.io/kumarrobotics/pytorch_base |
2 | | -ARG BASE_TAG=latest |
3 | | -ARG SETUP_ARGS="--with-cuda" |
4 | | - |
5 | | -FROM ${BASE_IMAGE}:${BASE_TAG} |
6 | | -WORKDIR /app |
7 | | -ADD . . |
8 | | -RUN ["bash", "-c", "/app/setup.sh ${SETUP_ARGS}"] |
9 | | -RUN ${VENV_PATH}/bin/pip install coverage_control |
10 | | - |
11 | | -RUN echo "export CoverageControl_ws=/workspace" >> /root/.bashrc |
12 | | -COPY utils/docker/entrypoint.sh /entrypoint.sh |
13 | | -RUN chmod +x /entrypoint.sh |
14 | | -ENTRYPOINT ["/entrypoint.sh"] |
15 | | - |
16 | | -# RUN export SETUP_ARGS=${SETUP_ARGS} && source ${VENV_PATH}/bin/activate && bash -c "./setup.sh ${SETUP_ARGS}" |
| 1 | +ARG IMAGE_TYPE="cpu" |
| 2 | +ARG CUDA_VERSION="12.4.1" |
| 3 | +ARG UBUNTU_VERSION="22.04" |
| 4 | + |
| 5 | +FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} AS cuda |
| 6 | +ARG PYTORCH_VERSION="2.5.1" |
| 7 | +ENV PYTORCH_VERSION=${PYTORCH_VERSION} |
| 8 | +COPY requirements.txt /opt/requirements.txt |
| 9 | +RUN mkdir download; \ |
| 10 | + wget https://download.pytorch.org/libtorch/cu124/libtorch-win-shared-with-deps-${PYTORCH_VERSION}%2Bcu124.zip -O download/libtorch.zip; \ |
| 11 | + unzip download/libtorch.zip -d /opt/; \ |
| 12 | + rm -r download |
| 13 | + |
| 14 | +FROM ubuntu:${UBUNTU_VERSION} AS cpu |
| 15 | +ARG PYTORCH_VERSION="2.5.1" |
| 16 | +ENV PYTORCH_VERSION=${PYTORCH_VERSION} |
| 17 | +COPY requirements_cpu.txt /opt/requirements.txt |
| 18 | +RUN mkdir download; \ |
| 19 | + wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${PYTORCH_VERSION}%2Bcpu.zip -O download/libtorch.zip; \ |
| 20 | + unzip download/libtorch.zip -d /opt/; \ |
| 21 | + rm -r download |
| 22 | + |
| 23 | +FROM arm64v8/ubuntu:${UBUNTU_VERSION} AS arm64 |
| 24 | +ARG PYTORCH_VERSION="2.5.1" |
| 25 | +ENV PYTORCH_VERSION=${PYTORCH_VERSION} |
| 26 | +COPY requirements_cpu.txt /opt/requirements.txt |
| 27 | +RUN mkdir download; \ |
| 28 | + wget https://github.com/AgarwalSaurav/libtorch_arm64/releases/download/v${PYTORCH_VERSION}/libtorch-cxx11-abi-shared-with-deps-${PYTORCH_VERSION}.zip -O download/libtorch.zip; \ |
| 29 | + unzip download/libtorch.zip -d /opt/; \ |
| 30 | + rm -r download |
| 31 | + |
| 32 | +FROM ${IMAGE_TYPE} AS base |
| 33 | +ARG PYTHON_VERSION="3.10" |
| 34 | +LABEL maintainer= "Saurav Agarwal <[email protected]>" |
| 35 | +LABEL description="Dockerfile for PyTorch GPU and ROS2" |
| 36 | + |
| 37 | +SHELL ["/bin/bash", "-c"] |
| 38 | + |
| 39 | +ENV DEBIAN_FRONTEND=noninteractive |
| 40 | +ENV PYTHON_VERSION=${PYTHON_VERSION} |
| 41 | +ENV TERM=xterm-256color |
| 42 | + |
| 43 | +RUN apt-get update && apt-get install -y apt-utils |
| 44 | + |
| 45 | +RUN apt-get -y update \ |
| 46 | + && apt-get -y upgrade \ |
| 47 | + && apt-get -y install \ |
| 48 | + build-essential \ |
| 49 | + git \ |
| 50 | + wget \ |
| 51 | + gpg \ |
| 52 | + curl \ |
| 53 | + gdb \ |
| 54 | + libbz2-dev \ |
| 55 | + software-properties-common \ |
| 56 | + ca-certificates \ |
| 57 | + lsb-release \ |
| 58 | + net-tools iputils-ping \ |
| 59 | + locales \ |
| 60 | + python${PYTHON_VERSION} \ |
| 61 | + python${PYTHON_VERSION}-dev \ |
| 62 | + python${PYTHON_VERSION}-venv \ |
| 63 | + && apt-get -y autoremove \ |
| 64 | + && apt-get -y clean autoclean |
| 65 | + |
| 66 | +# Add repo for installing latest version of cmake |
| 67 | +RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null; \ |
| 68 | + echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null; \ |
| 69 | + apt-get -y update; \ |
| 70 | + rm /usr/share/keyrings/kitware-archive-keyring.gpg \ |
| 71 | + && apt-get -y install kitware-archive-keyring |
| 72 | + |
| 73 | +RUN apt-get -y install \ |
| 74 | + cmake \ |
| 75 | + libgmp-dev \ |
| 76 | + libmpfr-dev \ |
| 77 | + libboost-all-dev \ |
| 78 | + libeigen3-dev \ |
| 79 | + libgeos-dev \ |
| 80 | + libyaml-cpp-dev \ |
| 81 | + vim \ |
| 82 | + neovim \ |
| 83 | + tmux \ |
| 84 | + ffmpeg \ |
| 85 | + unzip \ |
| 86 | + gnuplot-nox \ |
| 87 | + ninja-build \ |
| 88 | + libpng-dev \ |
| 89 | + libjpeg-dev \ |
| 90 | + libopencv-dev \ |
| 91 | + python3-opencv \ |
| 92 | + && apt-get -y autoremove \ |
| 93 | + && apt-get -y clean autoclean \ |
| 94 | + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ |
| 95 | + && rm -f /var/cache/apt/archives/*.deb \ |
| 96 | + && rm -f /var/cache/apt/archives/parital/*.deb \ |
| 97 | + && rm -f /var/cache/apt/*.bin |
| 98 | + |
| 99 | +ENV LD_LIBRARY_PATH="/usr/local/lib:/opt/libtorch/lib" |
| 100 | +ENV Torch_DIR=/opt/libtorch/share/cmake/ |
| 101 | + |
| 102 | +RUN python${PYTHON_VERSION} -m venv /opt/venv \ |
| 103 | + && /opt/venv/bin/pip install --no-cache-dir wheel \ |
| 104 | + && /opt/venv/bin/pip install --no-cache-dir -r /opt/requirements.txt |
| 105 | +ENV VENV_PATH=/opt/venv |
| 106 | + |
| 107 | +COPY .bashrc /root/.bashrc |
| 108 | + |
| 109 | +FROM base AS ros2 |
| 110 | +ARG ROS_DISTRO="humble" |
| 111 | +ENV ROS_DISTRO=${ROS_DISTRO} |
| 112 | +RUN apt-get -y update \ |
| 113 | + && add-apt-repository universe \ |
| 114 | + && locale-gen en_US en_US.UTF-8 \ |
| 115 | + && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 \ |
| 116 | + && export LANG=en_US.UTF-8 \ |
| 117 | + && curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg \ |
| 118 | + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null \ |
| 119 | + && apt-get -y update \ |
| 120 | + && apt-get install -y \ |
| 121 | + python3-colcon-common-extensions \ |
| 122 | + python3-vcstool \ |
| 123 | + python3-pip \ |
| 124 | + python3-argcomplete \ |
| 125 | + python3-rosdep \ |
| 126 | + python3-rosinstall-generator \ |
| 127 | + ros-${ROS_DISTRO}-desktop \ |
| 128 | + ros-dev-tools \ |
| 129 | + ros-${ROS_DISTRO}-rmw-cyclonedds-cpp \ |
| 130 | + ros-${ROS_DISTRO}-ros-gz \ |
| 131 | + ros-${ROS_DISTRO}-ros2bag \ |
| 132 | + ros-${ROS_DISTRO}-rosidl-generator-dds-idl \ |
| 133 | + && apt-get -y autoremove \ |
| 134 | + && apt-get -y clean autoclean \ |
| 135 | + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ |
| 136 | + && rm -f /var/cache/apt/archives/*.deb \ |
| 137 | + && rm -f /var/cache/apt/archives/parital/*.deb \ |
| 138 | + && rm -f /var/cache/apt/*.bin |
| 139 | + |
| 140 | +RUN /opt/venv/bin/pip install --no-cache-dir catkin_pkg empy==3.3.4 lark tomli |
| 141 | +RUN echo $'\n\ |
| 142 | +export PYTHONPATH=/opt/venv/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH\n\ |
| 143 | +export ROS_PYTHON_VERSION=3\n\ |
| 144 | +export ROS_VERSION=2\n\ |
| 145 | +export ROS_DOMAIN_ID=10\n\ |
| 146 | +source /opt/ros/${ROS_DISTRO}/setup.bash\n\ |
| 147 | +source /usr/share/colcon_cd/function/colcon_cd.sh\n\ |
| 148 | +export _colcon_cd_root=/opt/ros/${ROS_DISTRO}' >> /root/.bashrc |
0 commit comments