Dockerfile 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # syntax=docker/dockerfile:1.7
  2. # ============================================================
  3. # Versions
  4. # ============================================================
  5. ARG SUNSHINE_VERSION=v2025.924.154138
  6. ARG NVIDIA_DRIVER_VERSION=580.126.20
  7. ARG NVIDIA_DRIVER_PACKAGE_VERSION=580.126.20-1ubuntu1
  8. # ============================================================
  9. # ============================================================
  10. # On récupère le paquet Sunshine depuis l'image officielle.
  11. FROM ghcr.io/lizardbyte/sunshine:${SUNSHINE_VERSION}-ubuntu-24.04 AS sunshine
  12. # PoC : on réutilise volontairement notre environnement graphique déjà validé.
  13. FROM image-registry.openshift-image-registry.svc:5000/desktop/desktop:latest
  14. # Import global ARGs into this build stage
  15. ARG NVIDIA_DRIVER_VERSION
  16. ARG NVIDIA_DRIVER_PACKAGE_VERSION
  17. ENV EXPECTED_NVIDIA_DRIVER_VERSION=${NVIDIA_DRIVER_VERSION} \
  18. NVIDIA_I386_PACKAGE_VERSION=${NVIDIA_DRIVER_PACKAGE_VERSION}
  19. USER root
  20. # L'image Sunshine officielle conserve le .deb utilisé pour installer Sunshine.
  21. COPY --from=sunshine /sunshine.deb /tmp/sunshine.deb
  22. RUN apt-get update \
  23. && apt-get install --no-install-recommends -y /tmp/sunshine.deb \
  24. && rm -f /tmp/sunshine.deb \
  25. && apt-get clean \
  26. && rm -rf /var/lib/apt/lists/* /var/cache/apt/*
  27. COPY sunshine-entrypoint.sh /etc/sunshine-entrypoint.sh
  28. RUN sed -i 's/\r$//' /etc/sunshine-entrypoint.sh \
  29. && chmod 0755 /etc/sunshine-entrypoint.sh
  30. # Steam / Proton
  31. RUN dpkg --add-architecture i386 \
  32. && apt-get update \
  33. && apt-get install --no-install-recommends -y \
  34. ca-certificates \
  35. curl \
  36. && curl -fsSL \
  37. https://repo.steampowered.com/steam/archive/stable/steam.gpg \
  38. -o /usr/share/keyrings/steam.gpg \
  39. && printf '%s\n' \
  40. 'deb [arch=amd64,i386 signed-by=/usr/share/keyrings/steam.gpg] https://repo.steampowered.com/steam/ stable steam' \
  41. > /etc/apt/sources.list.d/steam-bootstrap.list \
  42. && apt-get update \
  43. && apt-get install --no-install-recommends -y \
  44. steam-launcher \
  45. steam-libs-amd64 \
  46. steam-libs-i386 \
  47. libegl1:amd64 \
  48. libegl1:i386 \
  49. libgbm1:amd64 \
  50. libgbm1:i386 \
  51. libgl1:amd64 \
  52. libgl1:i386 \
  53. libgl1-mesa-dri:amd64 \
  54. libgl1-mesa-dri:i386 \
  55. libglx-mesa0:amd64 \
  56. libglx-mesa0:i386 \
  57. libvulkan1:amd64 \
  58. libvulkan1:i386 \
  59. && rm -f /etc/apt/sources.list.d/steam-bootstrap.list \
  60. && apt-get clean \
  61. && rm -rf /var/lib/apt/lists/* /var/cache/apt/*
  62. # Stack 32bits Nvidia
  63. RUN curl -fsSLO \
  64. https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb \
  65. && dpkg -i cuda-keyring_1.1-1_all.deb \
  66. && rm -f cuda-keyring_1.1-1_all.deb \
  67. && dpkg --add-architecture i386 \
  68. && apt-get update \
  69. && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
  70. libnvidia-common-580=${NVIDIA_DRIVER_PACKAGE_VERSION} \
  71. libnvidia-gpucomp-580:i386=${NVIDIA_DRIVER_PACKAGE_VERSION} \
  72. libnvidia-decode-580:i386=${NVIDIA_DRIVER_PACKAGE_VERSION} \
  73. libnvidia-compute-580:i386=${NVIDIA_DRIVER_PACKAGE_VERSION} \
  74. libnvidia-gl-580:i386=${NVIDIA_DRIVER_PACKAGE_VERSION} \
  75. && mkdir -p /opt/nvidia-i386 \
  76. && for f in $(dpkg -L \
  77. libnvidia-gl-580:i386 \
  78. libnvidia-compute-580:i386 \
  79. libnvidia-decode-580:i386 \
  80. libnvidia-gpucomp-580:i386 \
  81. | grep '^/usr/lib/i386-linux-gnu/'); do \
  82. if [ -e "$f" ] || [ -L "$f" ]; then \
  83. cp -a --parents "$f" /opt/nvidia-i386/; \
  84. fi; \
  85. done \
  86. && apt-get clean \
  87. && rm -rf /var/lib/apt/lists/*
  88. USER 1000:1000
  89. ENV DISPLAY=:20 \
  90. HOME=/home/ubuntu \
  91. USER=ubuntu \
  92. XDG_RUNTIME_DIR=/tmp/runtime-ubuntu \
  93. PIPEWIRE_RUNTIME_DIR=/tmp/runtime-ubuntu \
  94. PULSE_RUNTIME_PATH=/tmp/runtime-ubuntu/pulse \
  95. PULSE_SERVER=unix:/tmp/runtime-ubuntu/pulse/native \
  96. NVIDIA_VISIBLE_DEVICES=all \
  97. NVIDIA_DRIVER_CAPABILITIES=all
  98. WORKDIR /home/ubuntu
  99. EXPOSE 47984-47990/tcp
  100. EXPOSE 48010/tcp
  101. EXPOSE 47998-48000/udp
  102. ENTRYPOINT ["/etc/sunshine-entrypoint.sh"]