Dockerfile.openpilot_base 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. FROM ubuntu:24.04
  2. ENV PYTHONUNBUFFERED 1
  3. ENV DEBIAN_FRONTEND=noninteractive
  4. RUN apt-get update && \
  5. apt-get install -y --no-install-recommends sudo tzdata locales ssh pulseaudio xvfb x11-xserver-utils gnome-screenshot && \
  6. rm -rf /var/lib/apt/lists/*
  7. RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
  8. ENV LANG en_US.UTF-8
  9. ENV LANGUAGE en_US:en
  10. ENV LC_ALL en_US.UTF-8
  11. COPY tools/install_ubuntu_dependencies.sh /tmp/tools/
  12. RUN /tmp/tools/install_ubuntu_dependencies.sh && \
  13. rm -rf /var/lib/apt/lists/* /tmp/* && \
  14. cd /usr/lib/gcc/arm-none-eabi/* && \
  15. rm -rf arm/ thumb/nofp thumb/v6* thumb/v8* thumb/v7+fp thumb/v7-r+fp.sp
  16. # Add OpenCL
  17. RUN apt-get update && apt-get install -y --no-install-recommends \
  18. apt-utils \
  19. alien \
  20. unzip \
  21. tar \
  22. curl \
  23. xz-utils \
  24. dbus \
  25. gcc-arm-none-eabi \
  26. tmux \
  27. vim \
  28. libx11-6 \
  29. wget \
  30. && rm -rf /var/lib/apt/lists/*
  31. RUN mkdir -p /tmp/opencl-driver-intel && \
  32. cd /tmp/opencl-driver-intel && \
  33. wget https://github.com/intel/llvm/releases/download/2024-WW14/oclcpuexp-2024.17.3.0.09_rel.tar.gz && \
  34. wget https://github.com/oneapi-src/oneTBB/releases/download/v2021.12.0/oneapi-tbb-2021.12.0-lin.tgz && \
  35. mkdir -p /opt/intel/oclcpuexp_2024.17.3.0.09_rel && \
  36. cd /opt/intel/oclcpuexp_2024.17.3.0.09_rel && \
  37. tar -zxvf /tmp/opencl-driver-intel/oclcpuexp-2024.17.3.0.09_rel.tar.gz && \
  38. mkdir -p /etc/OpenCL/vendors && \
  39. echo /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64/libintelocl.so > /etc/OpenCL/vendors/intel_expcpu.icd && \
  40. cd /opt/intel && \
  41. tar -zxvf /tmp/opencl-driver-intel/oneapi-tbb-2021.12.0-lin.tgz && \
  42. ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbb.so /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
  43. ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbbmalloc.so /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
  44. ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbb.so.12 /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
  45. ln -s /opt/intel/oneapi-tbb-2021.12.0/lib/intel64/gcc4.8/libtbbmalloc.so.2 /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 && \
  46. mkdir -p /etc/ld.so.conf.d && \
  47. echo /opt/intel/oclcpuexp_2024.17.3.0.09_rel/x64 > /etc/ld.so.conf.d/libintelopenclexp.conf && \
  48. ldconfig -f /etc/ld.so.conf.d/libintelopenclexp.conf && \
  49. cd / && \
  50. rm -rf /tmp/opencl-driver-intel
  51. ENV NVIDIA_VISIBLE_DEVICES all
  52. ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute
  53. ENV QTWEBENGINE_DISABLE_SANDBOX 1
  54. RUN dbus-uuidgen > /etc/machine-id
  55. ARG USER=batman
  56. ARG USER_UID=1001
  57. RUN useradd -m -s /bin/bash -u $USER_UID $USER
  58. RUN usermod -aG sudo $USER
  59. RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
  60. USER $USER
  61. COPY --chown=$USER pyproject.toml uv.lock /tmp/
  62. COPY --chown=$USER tools/install_python_dependencies.sh /tmp/tools/
  63. ENV VIRTUAL_ENV=/home/$USER/.venv
  64. ENV PATH="$VIRTUAL_ENV/bin:$PATH"
  65. RUN cd /tmp && \
  66. tools/install_python_dependencies.sh && \
  67. mkdir -p $VIRTUAL_ENV && \
  68. cp -r /tmp/.venv/* $VIRTUAL_ENV && \
  69. rm -rf /tmp/* && \
  70. rm -rf /home/$USER/.cache
  71. USER root
  72. RUN sudo git config --global --add safe.directory /tmp/openpilot