Dockerfile 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. # This Source Code Form is subject to the terms of the Mozilla Public
  2. # License, v. 2.0. If a copy of the MPL was not distributed with this
  3. # file, You can obtain one at https://mozilla.org/MPL/2.0/.
  4. # Ubuntu release versions 22.04, and 20.04 are supported
  5. ARG UBUNTU_RELEASE=22.04
  6. ARG CUDA_VERSION=11.7.1
  7. FROM nvcr.io/nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_RELEASE}
  8. LABEL maintainer "https://github.com/ehfd,https://github.com/danisla"
  9. ARG UBUNTU_RELEASE
  10. ARG CUDA_VERSION
  11. # Make all NVIDIA GPUs visible by default
  12. ARG NVIDIA_VISIBLE_DEVICES=all
  13. # Use noninteractive mode to skip confirmation when installing packages
  14. ARG DEBIAN_FRONTEND=noninteractive
  15. # All NVIDIA driver capabilities should preferably be used, check `NVIDIA_DRIVER_CAPABILITIES` inside the container if things do not work
  16. ENV NVIDIA_DRIVER_CAPABILITIES all
  17. # Disable VSYNC for NVIDIA GPUs
  18. ENV __GL_SYNC_TO_VBLANK 0
  19. # Expose CUDA libraries
  20. ENV LD_LIBRARY_PATH /usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  21. # Enable AppImage execution in a container
  22. ENV APPIMAGE_EXTRACT_AND_RUN 1
  23. # System defaults that should not be changed
  24. ENV DISPLAY :0
  25. ENV XDG_RUNTIME_DIR /tmp/runtime-user
  26. ENV PULSE_SERVER unix:/run/pulse/native
  27. # Default environment variables (password is "mypasswd")
  28. ENV TZ UTC
  29. ENV SIZEW 1920
  30. ENV SIZEH 1080
  31. ENV REFRESH 60
  32. ENV DPI 96
  33. ENV CDEPTH 24
  34. ENV VIDEO_PORT DFP
  35. ENV PASSWD mypasswd
  36. ENV NOVNC_ENABLE false
  37. ENV WEBRTC_ENCODER nvh264enc
  38. ENV WEBRTC_ENABLE_RESIZE false
  39. ENV ENABLE_AUDIO true
  40. ENV ENABLE_BASIC_AUTH true
  41. # Set versions for components that should be manually checked before upgrading, other component versions are automatically determined by fetching the version online
  42. ARG NOVNC_VERSION=1.4.0
  43. # Install locales to prevent X11 errors
  44. RUN apt-get clean && \
  45. apt-get update && apt-get install --no-install-recommends -y locales && \
  46. rm -rf /var/lib/apt/lists/* && \
  47. locale-gen en_US.UTF-8
  48. ENV LANG en_US.UTF-8
  49. ENV LANGUAGE en_US:en
  50. ENV LC_ALL en_US.UTF-8
  51. # Install Xorg and other important libraries or packages
  52. RUN dpkg --add-architecture i386 && \
  53. apt-get update && apt-get install --no-install-recommends -y \
  54. software-properties-common \
  55. alsa-base \
  56. alsa-utils \
  57. apt-transport-https \
  58. apt-utils \
  59. build-essential \
  60. ca-certificates \
  61. ssl-cert \
  62. cups-browsed \
  63. cups-bsd \
  64. cups-common \
  65. cups-filters \
  66. cups-pdf \
  67. curl \
  68. file \
  69. wget \
  70. bzip2 \
  71. gzip \
  72. xz-utils \
  73. unar \
  74. rar \
  75. unrar \
  76. zip \
  77. unzip \
  78. zstd \
  79. gcc \
  80. git \
  81. jq \
  82. make \
  83. python3 \
  84. python3-cups \
  85. python3-numpy \
  86. mlocate \
  87. nano \
  88. vim \
  89. htop \
  90. fakeroot \
  91. fonts-dejavu \
  92. fonts-freefont-ttf \
  93. fonts-hack \
  94. fonts-liberation \
  95. fonts-noto \
  96. fonts-noto-cjk \
  97. fonts-noto-cjk-extra \
  98. fonts-noto-color-emoji \
  99. fonts-noto-extra \
  100. fonts-noto-ui-extra \
  101. fonts-noto-hinted \
  102. fonts-noto-mono \
  103. fonts-noto-unhinted \
  104. fonts-opensymbol \
  105. fonts-symbola \
  106. fonts-ubuntu \
  107. lame \
  108. less \
  109. libavcodec-extra \
  110. libpulse0 \
  111. pulseaudio \
  112. supervisor \
  113. net-tools \
  114. libglvnd-dev \
  115. libglvnd-dev:i386 \
  116. libgl1-mesa-dev \
  117. libgl1-mesa-dev:i386 \
  118. libegl1-mesa-dev \
  119. libegl1-mesa-dev:i386 \
  120. libgles2-mesa-dev \
  121. libgles2-mesa-dev:i386 \
  122. libglvnd0 \
  123. libglvnd0:i386 \
  124. libgl1 \
  125. libgl1:i386 \
  126. libglx0 \
  127. libglx0:i386 \
  128. libegl1 \
  129. libegl1:i386 \
  130. libgles2 \
  131. libgles2:i386 \
  132. libglu1 \
  133. libglu1:i386 \
  134. libsm6 \
  135. libsm6:i386 \
  136. pkg-config \
  137. packagekit-tools \
  138. mesa-utils \
  139. mesa-utils-extra \
  140. va-driver-all \
  141. va-driver-all:i386 \
  142. i965-va-driver-shaders \
  143. i965-va-driver-shaders:i386 \
  144. intel-media-va-driver-non-free \
  145. intel-media-va-driver-non-free:i386 \
  146. libva2 \
  147. libva2:i386 \
  148. vainfo \
  149. vdpau-driver-all \
  150. vdpau-driver-all:i386 \
  151. vdpauinfo \
  152. xserver-xorg-input-all \
  153. xserver-xorg-input-wacom \
  154. xserver-xorg-video-all \
  155. xserver-xorg-video-intel \
  156. xserver-xorg-video-qxl \
  157. vulkan-tools \
  158. mesa-vulkan-drivers \
  159. mesa-vulkan-drivers:i386 \
  160. libvulkan-dev \
  161. libvulkan-dev:i386 \
  162. libxau6 \
  163. libxau6:i386 \
  164. libxdmcp6 \
  165. libxdmcp6:i386 \
  166. libxcb1 \
  167. libxcb1:i386 \
  168. libxext6 \
  169. libxext6:i386 \
  170. libx11-6 \
  171. libx11-6:i386 \
  172. libxv1 \
  173. libxv1:i386 \
  174. libxtst6 \
  175. libxtst6:i386 \
  176. xdg-user-dirs \
  177. xdg-utils \
  178. dbus-user-session \
  179. dbus-x11 \
  180. libdbus-c++-1-0v5 \
  181. xkb-data \
  182. x11-xkb-utils \
  183. x11-xserver-utils \
  184. x11-utils \
  185. x11-apps \
  186. xauth \
  187. xbitmaps \
  188. xfonts-base \
  189. xfonts-scalable \
  190. xinit \
  191. xsettingsd \
  192. libxrandr-dev \
  193. # Install essential Xorg and NVIDIA packages, packages above this line should be the same between docker-nvidia-glx-desktop and docker-nvidia-egl-desktop
  194. kmod \
  195. libc6-dev \
  196. libc6:i386 \
  197. libpci3 \
  198. libelf-dev \
  199. xorg && \
  200. rm -rf /var/lib/apt/lists/* && \
  201. # Configure EGL manually
  202. mkdir -p /usr/share/glvnd/egl_vendor.d/ && \
  203. echo "{\n\
  204. \"file_format_version\" : \"1.0.0\",\n\
  205. \"ICD\": {\n\
  206. \"library_path\": \"libEGL_nvidia.so.0\"\n\
  207. }\n\
  208. }" > /usr/share/glvnd/egl_vendor.d/10_nvidia.json
  209. # Anything below this line should be always kept the same between docker-nvidia-glx-desktop and docker-nvidia-egl-desktop
  210. # Install KDE and other GUI packages
  211. ENV XDG_CURRENT_DESKTOP KDE
  212. ENV KWIN_COMPOSE N
  213. ENV KWIN_X11_NO_SYNC_TO_VBLANK 1
  214. # Use sudoedit to change protected files instead of using sudo on kate
  215. ENV SUDO_EDITOR kate
  216. RUN mkdir -pm755 /etc/apt/preferences.d && \
  217. echo "Package: firefox*\n\
  218. Pin: version 1:1snap*\n\
  219. Pin-Priority: -1" > /etc/apt/preferences.d/firefox-nosnap && \
  220. # Add Mozilla Firefox PPA
  221. mkdir -pm755 /etc/apt/trusted.gpg.d && curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x0AB215679C571D1C8325275B9BDB3D89CE49EC21" | gpg --dearmor -o /etc/apt/trusted.gpg.d/mozillateam-ubuntu-ppa.gpg && \
  222. mkdir -pm755 /etc/apt/sources.list.d && echo "deb https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu $(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2) main" > "/etc/apt/sources.list.d/mozillateam-ubuntu-ppa-$(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2).list" && \
  223. apt-get update && apt-get install --no-install-recommends -y \
  224. kde-plasma-desktop \
  225. adwaita-icon-theme-full \
  226. appmenu-gtk3-module \
  227. ark \
  228. aspell \
  229. aspell-en \
  230. breeze \
  231. breeze-cursor-theme \
  232. breeze-gtk-theme \
  233. breeze-icon-theme \
  234. debconf-kde-helper \
  235. desktop-file-utils \
  236. dolphin \
  237. dolphin-plugins \
  238. dbus-x11 \
  239. enchant-2 \
  240. fcitx \
  241. fcitx-frontend-gtk2 \
  242. fcitx-frontend-gtk3 \
  243. fcitx-frontend-qt5 \
  244. fcitx-module-dbus \
  245. fcitx-module-kimpanel \
  246. fcitx-module-lua \
  247. fcitx-module-x11 \
  248. fcitx-tools \
  249. filelight \
  250. frameworkintegration \
  251. gwenview \
  252. haveged \
  253. hunspell \
  254. im-config \
  255. kate \
  256. kcalc \
  257. kcharselect \
  258. kdeadmin \
  259. kde-config-fcitx \
  260. kde-config-gtk-style \
  261. kde-config-gtk-style-preview \
  262. kdeconnect \
  263. kdegraphics-thumbnailers \
  264. kde-spectacle \
  265. kdf \
  266. kdialog \
  267. kget \
  268. kimageformat-plugins \
  269. kinfocenter \
  270. kio \
  271. kio-extras \
  272. kmag \
  273. kmenuedit \
  274. kmix \
  275. kmousetool \
  276. kmouth \
  277. ksshaskpass \
  278. ktimer \
  279. kwayland-integration \
  280. kwin-addons \
  281. kwin-x11 \
  282. libdbusmenu-glib4 \
  283. libdbusmenu-gtk3-4 \
  284. libgail-common \
  285. libgdk-pixbuf2.0-bin \
  286. libgtk2.0-bin \
  287. libgtk-3-bin \
  288. libkf5baloowidgets-bin \
  289. libkf5dbusaddons-bin \
  290. libkf5iconthemes-bin \
  291. libkf5kdelibs4support5-bin \
  292. libkf5khtml-bin \
  293. libkf5parts-plugins \
  294. libqt5multimedia5-plugins \
  295. librsvg2-common \
  296. media-player-info \
  297. okular \
  298. okular-extra-backends \
  299. partitionmanager \
  300. plasma-browser-integration \
  301. plasma-calendar-addons \
  302. plasma-dataengines-addons \
  303. plasma-discover \
  304. plasma-integration \
  305. plasma-runners-addons \
  306. plasma-widgets-addons \
  307. policykit-desktop-privileges \
  308. polkit-kde-agent-1 \
  309. print-manager \
  310. qapt-deb-installer \
  311. qml-module-org-kde-runnermodel \
  312. qml-module-org-kde-qqc2desktopstyle \
  313. qml-module-qtgraphicaleffects \
  314. qml-module-qtquick-xmllistmodel \
  315. qt5-gtk-platformtheme \
  316. qt5-image-formats-plugins \
  317. qt5-style-plugins \
  318. qtspeech5-flite-plugin \
  319. qtvirtualkeyboard-plugin \
  320. software-properties-qt \
  321. sonnet-plugins \
  322. sweeper \
  323. systemsettings \
  324. ubuntu-drivers-common \
  325. vlc \
  326. vlc-l10n \
  327. vlc-plugin-access-extra \
  328. vlc-plugin-notify \
  329. vlc-plugin-samba \
  330. vlc-plugin-skins2 \
  331. vlc-plugin-video-splitter \
  332. vlc-plugin-visualization \
  333. xdg-desktop-portal-kde \
  334. xdg-user-dirs \
  335. firefox \
  336. pavucontrol-qt \
  337. transmission-qt && \
  338. apt-get install --install-recommends -y \
  339. libreoffice \
  340. libreoffice-kf5 \
  341. libreoffice-plasma \
  342. libreoffice-style-breeze && \
  343. rm -rf /var/lib/apt/lists/* && \
  344. # Ensure Firefox is the default web browser
  345. update-alternatives --set x-www-browser /usr/bin/firefox && \
  346. # Fix KDE startup permissions issues in containers
  347. cp -f /usr/lib/x86_64-linux-gnu/libexec/kf5/start_kdeinit /tmp/ && \
  348. rm -f /usr/lib/x86_64-linux-gnu/libexec/kf5/start_kdeinit && \
  349. cp -r /tmp/start_kdeinit /usr/lib/x86_64-linux-gnu/libexec/kf5/start_kdeinit && \
  350. rm -f /tmp/start_kdeinit && \
  351. # KDE disable screen lock, double-click to open instead of single-click
  352. echo "[Daemon]\n\
  353. Autolock=false\n\
  354. LockOnResume=false" > /etc/xdg/kscreenlockerrc && \
  355. echo "[KDE]\n\
  356. SingleClick=false\n\
  357. \n\
  358. [KDE Action Restrictions]\n\
  359. action/lock_screen=false\n\
  360. logout=false" > /etc/xdg/kdeglobals
  361. # Wine, Winetricks, Lutris, and PlayOnLinux, this process must be consistent with https://wiki.winehq.org/Ubuntu
  362. ARG WINE_BRANCH=staging
  363. RUN mkdir -pm755 /etc/apt/keyrings && curl -fsSL -o /etc/apt/keyrings/winehq-archive.key "https://dl.winehq.org/wine-builds/winehq.key" && \
  364. curl -fsSL -o "/etc/apt/sources.list.d/winehq-$(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2).sources" "https://dl.winehq.org/wine-builds/ubuntu/dists/$(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2)/winehq-$(grep UBUNTU_CODENAME= /etc/os-release | cut -d= -f2).sources" && \
  365. apt-get update && apt-get install --install-recommends -y \
  366. winehq-${WINE_BRANCH} && \
  367. apt-get install --no-install-recommends -y \
  368. q4wine \
  369. playonlinux && \
  370. LUTRIS_VERSION=$(curl -fsSL "https://api.github.com/repos/lutris/lutris/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g') && \
  371. curl -fsSL -O "https://github.com/lutris/lutris/releases/download/v${LUTRIS_VERSION}/lutris_${LUTRIS_VERSION}_all.deb" && \
  372. apt-get install --no-install-recommends -y ./lutris_${LUTRIS_VERSION}_all.deb && rm -f "./lutris_${LUTRIS_VERSION}_all.deb" && \
  373. rm -rf /var/lib/apt/lists/* && \
  374. curl -fsSL -o /usr/bin/winetricks "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" && \
  375. chmod 755 /usr/bin/winetricks && \
  376. curl -fsSL -o /usr/share/bash-completion/completions/winetricks "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion"
  377. # Install latest Selkies-GStreamer (https://github.com/selkies-project/selkies-gstreamer) build, Python application, and web application, should be consistent with selkies-gstreamer documentation
  378. RUN apt-get update && apt-get install --no-install-recommends -y \
  379. # GStreamer dependencies
  380. python3-pip \
  381. python3-dev \
  382. python3-gi \
  383. python3-setuptools \
  384. python3-wheel \
  385. udev \
  386. wmctrl \
  387. jq \
  388. gdebi-core \
  389. libgdk-pixbuf2.0-0 \
  390. libgtk2.0-bin \
  391. libgl-dev \
  392. libgles-dev \
  393. libglvnd-dev \
  394. libgudev-1.0-0 \
  395. xclip \
  396. x11-utils \
  397. xdotool \
  398. x11-xserver-utils \
  399. xserver-xorg-core \
  400. wayland-protocols \
  401. libwayland-dev \
  402. libwayland-egl1 \
  403. libx11-xcb1 \
  404. libxkbcommon0 \
  405. libxdamage1 \
  406. libsoup2.4-1 \
  407. libsoup-gnome2.4-1 \
  408. libsrtp2-1 \
  409. lame \
  410. libopus0 \
  411. libwebrtc-audio-processing1 \
  412. pulseaudio \
  413. libpulse0 \
  414. libcairo-gobject2 \
  415. libpangocairo-1.0-0 \
  416. libgirepository-1.0-1 \
  417. libopenjp2-7 \
  418. libjpeg-dev \
  419. libwebp-dev \
  420. libvpx-dev \
  421. zlib1g-dev \
  422. x264 \
  423. # AMD/Intel graphics driver dependencies
  424. va-driver-all \
  425. i965-va-driver-shaders \
  426. intel-media-va-driver-non-free \
  427. libva2 \
  428. vainfo \
  429. intel-gpu-tools \
  430. radeontop && \
  431. if [ "${UBUNTU_RELEASE}" \> "20.04" ]; then apt-get install --no-install-recommends -y xcvt; fi && \
  432. rm -rf /var/lib/apt/lists/* && \
  433. cd /opt && \
  434. # Automatically fetch the latest selkies-gstreamer version and install the components
  435. SELKIES_VERSION=$(curl -fsSL "https://api.github.com/repos/selkies-project/selkies-gstreamer/releases/latest" | jq -r '.tag_name' | sed 's/[^0-9\.\-]*//g') && \
  436. curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-gstreamer-v${SELKIES_VERSION}-ubuntu${UBUNTU_RELEASE}.tgz" | tar -zxf - && \
  437. curl -O -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && pip3 install "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && rm -f "selkies_gstreamer-${SELKIES_VERSION}-py3-none-any.whl" && \
  438. curl -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-gstreamer-web-v${SELKIES_VERSION}.tgz" | tar -zxf - && \
  439. curl -O -fsSL "https://github.com/selkies-project/selkies-gstreamer/releases/download/v${SELKIES_VERSION}/selkies-js-interposer-v${SELKIES_VERSION}-ubuntu${UBUNTU_RELEASE}.deb" && apt-get update && apt-get install --no-install-recommends -y "./selkies-js-interposer-v${SELKIES_VERSION}-ubuntu${UBUNTU_RELEASE}.deb" && rm -f "selkies-js-interposer-v${SELKIES_VERSION}-ubuntu${UBUNTU_RELEASE}.deb" && rm -rf /var/lib/apt/lists/* && \
  440. cd /usr/local/cuda/lib64 && sudo find . -maxdepth 1 -type l -name "*libnvrtc.so.*" -exec sh -c 'ln -snf $(basename {}) libnvrtc.so' \;
  441. # Add configuration for Selkies-GStreamer Joystick interposer
  442. ENV LD_PRELOAD /usr/local/lib/selkies-js-interposer/joystick_interposer.so${LD_PRELOAD:+:${LD_PRELOAD}}
  443. ENV SDL_JOYSTICK_DEVICE /dev/input/js0
  444. # Install the noVNC web interface and the latest x11vnc for fallback
  445. RUN apt-get update && apt-get install --no-install-recommends -y \
  446. autoconf \
  447. automake \
  448. autotools-dev \
  449. chrpath \
  450. debhelper \
  451. git \
  452. jq \
  453. python3 \
  454. python3-numpy \
  455. libc6-dev \
  456. libcairo2-dev \
  457. libjpeg-turbo8-dev \
  458. libssl-dev \
  459. libv4l-dev \
  460. libvncserver-dev \
  461. libtool-bin \
  462. libxdamage-dev \
  463. libxinerama-dev \
  464. libxrandr-dev \
  465. libxss-dev \
  466. libxtst-dev \
  467. libavahi-client-dev && \
  468. rm -rf /var/lib/apt/lists/* && \
  469. # Build the latest x11vnc source to avoid various errors
  470. git clone "https://github.com/LibVNC/x11vnc.git" /tmp/x11vnc && \
  471. cd /tmp/x11vnc && autoreconf -fi && ./configure && make install && cd / && rm -rf /tmp/* && \
  472. curl -fsSL "https://github.com/novnc/noVNC/archive/v${NOVNC_VERSION}.tar.gz" | tar -xzf - -C /opt && \
  473. mv -f "/opt/noVNC-${NOVNC_VERSION}" /opt/noVNC && \
  474. ln -snf /opt/noVNC/vnc.html /opt/noVNC/index.html && \
  475. # Use the latest Websockify source to expose noVNC
  476. git clone "https://github.com/novnc/websockify.git" /opt/noVNC/utils/websockify
  477. # Add custom packages right below this comment, or use FROM in a new container and replace entrypoint.sh or supervisord.conf, and set ENTRYPOINT to /usr/bin/supervisord
  478. # Create user with password ${PASSWD} and assign adequate groups
  479. RUN apt-get update && apt-get install --no-install-recommends -y \
  480. sudo \
  481. tzdata && \
  482. rm -rf /var/lib/apt/lists/* && \
  483. groupadd -g 1000 user && \
  484. useradd -ms /bin/bash user -u 1000 -g 1000 && \
  485. usermod -a -G adm,audio,cdrom,dialout,dip,fax,floppy,input,lp,lpadmin,plugdev,pulse-access,scanner,ssl-cert,sudo,tape,tty,video,voice user && \
  486. echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
  487. chown user:user /home/user && \
  488. echo "user:${PASSWD}" | chpasswd && \
  489. ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" > /etc/timezone
  490. # Copy scripts and configurations used to start the container
  491. COPY entrypoint.sh /etc/entrypoint.sh
  492. RUN chmod 755 /etc/entrypoint.sh
  493. COPY selkies-gstreamer-entrypoint.sh /etc/selkies-gstreamer-entrypoint.sh
  494. RUN chmod 755 /etc/selkies-gstreamer-entrypoint.sh
  495. COPY supervisord.conf /etc/supervisord.conf
  496. RUN chmod 755 /etc/supervisord.conf
  497. EXPOSE 8080
  498. USER user
  499. ENV SHELL /bin/bash
  500. ENV USER user
  501. WORKDIR /home/user
  502. ENTRYPOINT ["/usr/bin/supervisord"]