From 300ef6e6a07ab8fd612c1e76d88c62cc0c658448 Mon Sep 17 00:00:00 2001 From: "Arnaud G. GIBERT" Date: Mon, 14 Apr 2025 19:13:24 +0200 Subject: [PATCH] - Initial release, - Based on rx3/x11-pulse-mga9:1.2.3 image. --- .gitignore | 2 ++ Dockerfile | 24 ++++++++++++++++ ReadMe.txt | 23 +++++++++++++++ ReleaseNotes.txt | 6 ++++ bin/run.sh | 48 +++++++++++++++++++++++++++++++ compose.yaml | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ env.dist | 59 +++++++++++++++++++++++++++++++++++++ 7 files changed, 237 insertions(+) create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 ReadMe.txt create mode 100644 ReleaseNotes.txt create mode 100755 bin/run.sh create mode 100644 compose.yaml create mode 100644 env.dist diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..556bc65 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*.old diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5416f65 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# Rx3-Docker/X11-Pulse-NVidia Docker Image +#------------------------------------------------------------------------------- + +ARG IMG_FROM_URL="rx3-docker/x11-pulse:latest" + +FROM ${IMG_FROM_URL} + +ARG IMG_NAME +ARG IMG_NAME_FULL +ARG IMG_VERSION +ARG IMG_MAINTAINER + +LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL} +LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION} +LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER} +LABEL maintainer=${IMG_MAINTAINER} + +ENV DISPLAY=:0 + + +RUN urpmi.update -a \ + && urpmi --force --no-install dkms-nvidia-current kernel-desktop-devel x11-driver-video-nvidia-current \ + && rpm -Uvh --nodeps /var/cache/urpmi/rpms/x11-driver-video-nvidia-current*.rpm \ + && \rm /var/cache/urpmi/rpms/* diff --git a/ReadMe.txt b/ReadMe.txt new file mode 100644 index 0000000..e81b75b --- /dev/null +++ b/ReadMe.txt @@ -0,0 +1,23 @@ +Welcome to RX3-Docker/X11-Pulse-NVidia docker image! + + + +This is project aims to build a X11 + Pulse + NVidia docker image able to run any graphic & audio application isolated and hardware optimized. + +Features: + - Curtently based on rx3-docker/x11-pulse:1.2.3-mga9 image, + - NVidia libs installed, + - Require nvidia-container-toolkit installed on the host. + +Usage: + ./bin/run.sh [-h] [-i] [Args...] + + + +Enjoy it! + +Your Rx3 Team. + +-- +arnaud@rx3.net +https://git.rx3.org/gitea/rx3-docker/x11-pulse diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt new file mode 100644 index 0000000..db308b8 --- /dev/null +++ b/ReleaseNotes.txt @@ -0,0 +1,6 @@ +------------------------------------------------------------------------------------------------------------------------------------ +Rx3-Docker/X11-Pulse-NVidia V 1.0.0 - A. GIBERT - 2025/04/14 +------------------------------------------------------------------------------------------------------------------------------------ + +- Initial release, +- Based on rx3/x11-pulse-mga9:1.2.3 image. diff --git a/bin/run.sh b/bin/run.sh new file mode 100755 index 0000000..bf3c9a0 --- /dev/null +++ b/bin/run.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +set -o errexit + +APPL_HOME_DIR="$(dirname "$(dirname "$0")")" + + + +#------------------------------------------------------------------------------- + +if [[ "$1" == "-h" ]] +then + echo "usage: run.sh [-h] [-i] [Args...]" + echo "with -i enabling internet access." + + exit 0 +fi + +if [[ "$1" == "-i" ]] +then + shift; + export APPL_NETWORK="internet" +else + export APPL_NETWORK="no-internet" +fi + +export APPL_DIR="$1" +shift + +export APPL_NAME="$1" +shift + + + +APPL_DIR=$(realpath ${APPL_DIR}) + +export USER_ID=$(id -u) +export GROUP_ID=$(id -g) +export GROUP_NAME=$(id -gn) + + +cd "${APPL_HOME_DIR}" + +sbin/docker_mk_env + +docker compose run --rm x11-pulse-nvidia /usr/local/sbin/user_add_exec ${USER_ID} ${USER} ${HOME} ${GROUP_ID} ${GROUP_NAME} "${APPL_DIR}" "${APPL_NAME}" "$@" + +docker compose down diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..03b337f --- /dev/null +++ b/compose.yaml @@ -0,0 +1,75 @@ +# Rx3-Docker/X11-Pulse-NVidia Docker Image +#------------------------------------------------------------------------------- + +name: ${XPN_IMG_NAME} + +services: + +#------------------------------------------------------------------------------- + + x11-pulse-nvidia: + container_name: ${XPN_HOST_NAME} + hostname: ${XPN_HOST_NAME} + + image: ${XPN_IMG_URL} + + build: + context: . + args: + IMG_NAME: ${XPN_IMG_NAME} + IMG_NAME_FULL: ${XPN_IMG_NAME_FULL} + IMG_VERSION: ${XPN_IMG_VERSION} + IMG_MAINTAINER: ${XPN_IMG_MAINTAINER} + IMG_FROM_URL: ${XPN_IMG_FROM_URL} + + restart: unless-stopped + + environment: + DISPLAY: ":0" + NVIDIA_VISIBLE_DEVICES: "all" # or "0" for GPU 0 only + + volumes: +# - home_dir:/home + - /opt/vm/home:/home + - type: bind + source: /tmp/.X11-unix/X0 + target: /tmp/.X11-unix/X0 + - type: bind + source: /run/user/${USER_ID}/pulse + target: /run/user/${USER_ID}/pulse + - type: bind + source: "${APPL_DIR}" + target: "${APPL_DIR}" + + networks: + - ${APPL_NETWORK} + + runtime: nvidia + deploy: + resources: + reservations: + devices: + - capabilities: [gpu] + +volumes: + home_dir: + external: true + + + +#------------------------------------------------------------------------------- + +networks: + internet: + name: ${NETWORK_NAME}-internet + driver: bridge + internal: false # Allow internet access + driver_opts: + com.docker.network.bridge.name: ${NETWORK_IF_NAME} + + no-internet: + name: ${NETWORK_NAME}-no-internet + driver: bridge + internal: true # Block internet access + driver_opts: + com.docker.network.bridge.name: ${NETWORK_IF_NAME} diff --git a/env.dist b/env.dist new file mode 100644 index 0000000..f960ff4 --- /dev/null +++ b/env.dist @@ -0,0 +1,59 @@ +# Rx3-Docker/X11-Pulse-NVidia Docker Image +#------------------------------------------------------------------------------- + +#------------------------------------------------------------------------------- +# Global Settings +#------------------------------------------------------------------------------- + +ORG_NAME="rx3-docker" +ORG_REGISTRY="docker.xor.rx3:5000" +ORG_MAINTAINER='"Arnaud G. GIBERT" ' + +ORG_URL_PREFIX="${ORG_REGISTRY}/${ORG_NAME}" + + + +#------------------------------------------------------------------------------- +# Image Settings +#------------------------------------------------------------------------------- + +APPL_NAME="x11-pulse-nvidia" +APPL_NAME_FULL="X11-Pulse-NVidia Docker Image" +APPL_NAME_SHORT="x11-pls-nv" +APPL_VERSION="1.0.0" + +HOST_NAME_PREFIX=${APPL_NAME_SHORT}${APPL_SUFFIX} + +PORT_ENV_OFFSET=0 + +PORT_SV_INT=9001 +PORT_SV_OFFSET=1000 + +NETWORK_NAME=${HOST_NAME_PREFIX} +NETWORK_IF_NAME=br-${NETWORK_NAME} + +DOCKER_TOOLS_DEBUG=FALSE + +DOCKER_TOOLS_VOLUME=SINGLE +#DOCKER_TOOLS_VOLUME=MIXED +#DOCKER_TOOLS_VOLUME=MERGED +#DOCKER_TOOLS_VOLUME=SPLIT + +#DOCKER_TOOLS_EXEPTION_LIBS="postgres:pgsql" + +#------------------+----------+--------------------------+--------------------+------------------+-------------------------------+---------------------+--------------------+---------------+------------+--------------+------------+-------+-------+-------+-------+--------------+--------------+ +# | Variable | Service | Target Image | From Image | Module | Main Port | Admin Port | User | Group | +# | Prefix | Name | URL Prefix | Name | Name Full | Version | URL Prefix | Name | Version | Name | Version | Ext | Int | Ext | Int | Name / Id | Name / Id | +#------------------+----------+--------------------------+--------------------+------------------+-------------------------------+---------------------+--------------------+---------------+------------+--------------+------------+-------+-------+-------+-------+--------------+--------------+ + +docker_service_add XPN x11-pulse-nvidia ${ORG_URL_PREFIX} - "Rx3-Docker/X11-Pulse-NVidia" ${APPL_VERSION}-mga9 ${ORG_URL_PREFIX} x11-pulse 1.2.3-mga9 - - - - - - - - + + + +#------------------------------------------------------------------------------- +# User Settings (overwrited at run time) +#------------------------------------------------------------------------------- + +USER_ID="" +APPL_DIR="" +APPL_NETWORK="no-internet"