diff --git a/Dockerfile b/Dockerfile index 448fa0e..5c9bdef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ -FROM debian:bullseye-slim +FROM debian:bookworm-slim LABEL maintainer="Josh.5 " # Update package repos ARG DEBIAN_FRONTEND=noninteractive RUN \ echo "**** Update apt database ****" \ - && sed -i '/^.*main/ s/$/ contrib non-free/' /etc/apt/sources.list \ + && sed -i '/^Components: main/ s/$/ contrib non-free/' /etc/apt/sources.list.d/debian.sources \ && \ echo @@ -53,27 +53,6 @@ RUN \ && \ echo -# Configure default user and set env -ENV \ - PUID=99 \ - PGID=100 \ - UMASK=000 \ - USER="default" \ - USER_PASSWORD="password" \ - USER_HOME="/home/default" \ - TZ="Pacific/Auckland" \ - USER_LOCALES="en_US.UTF-8 UTF-8" -RUN \ - echo "**** Configure default user '${USER}' ****" \ - && mkdir -p \ - ${USER_HOME} \ - && useradd -d ${USER_HOME} -s /bin/bash ${USER} \ - && chown -R ${USER} \ - ${USER_HOME} \ - && echo "${USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers \ - && \ - echo - # Install core packages RUN \ echo "**** Update apt database ****" \ @@ -122,6 +101,27 @@ RUN \ && \ echo +# Configure default user and set user env +ENV \ + PUID=99 \ + PGID=100 \ + UMASK=000 \ + USER="default" \ + USER_PASSWORD="password" \ + USER_HOME="/home/default" \ + TZ="Pacific/Auckland" \ + USER_LOCALES="en_US.UTF-8 UTF-8" +RUN \ + echo "**** Configure default user '${USER}' ****" \ + && mkdir -p \ + ${USER_HOME} \ + && useradd -d ${USER_HOME} -s /bin/bash ${USER} \ + && chown -R ${USER} \ + ${USER_HOME} \ + && echo "${USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers \ + && \ + echo + # Install supervisor RUN \ echo "**** Update apt database ****" \ @@ -142,6 +142,8 @@ RUN \ echo # Install mesa and vulkan requirements +# TODO: Strip this section back to only what is required for all GPU types. +# Anything only required for Intel/AMD/NVIDIA should go in the container init. RUN \ echo "**** Update apt database ****" \ && dpkg --add-architecture i386 \ @@ -183,6 +185,7 @@ RUN \ echo # Install X Server requirements +# TODO: Refine this list of packages to only what is required. RUN \ echo "**** Update apt database ****" \ && apt-get update \ @@ -202,6 +205,7 @@ RUN \ xauth \ xbindkeys \ xclip \ + xcvt \ xdotool \ xfishtank \ xfonts-base \ @@ -248,6 +252,7 @@ RUN \ echo # Install desktop environment +# TODO: Specify all needed packages and add '--no-install-recommends' RUN \ echo "**** Update apt database ****" \ && apt-get update \ @@ -292,19 +297,15 @@ RUN \ echo # Add support for flatpaks +# TODO: Remove bridge-utils RUN \ echo "**** Update apt database ****" \ && apt-get update \ && \ echo "**** Install flatpak support ****" \ - && apt-get install -y \ - bridge-utils \ + && apt-get install -y --no-install-recommends \ flatpak \ gnome-software-plugin-flatpak \ - libpam-cgfs \ - libvirt0 \ - lxc \ - uidmap \ && \ echo "**** Configure flatpak ****" \ && chmod u+s /usr/bin/bwrap \ @@ -344,14 +345,15 @@ RUN \ && wget -O /usr/local/bin/docker-compose "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-Linux-x86_64" \ && chmod +x /usr/local/bin/docker-compose \ && \ - echo "**** Install nvidia runtime ****" \ - && distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ - && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add - \ - && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list \ - && apt-get update \ - && apt-get install -y \ - nvidia-container-toolkit \ - && \ + # TODO: Fix nvidia-container-toolkit. This is not yet offically supported in Bookworm. If we really need it, we can install it with debian11 + #echo "**** Install nvidia runtime ****" \ + # && distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ + # && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add - \ + # && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list \ + # && apt-get update \ + # && apt-get install -y \ + # nvidia-container-toolkit \ + #&& \ echo "**** Section cleanup ****" \ && apt-get clean autoclean -y \ && apt-get autoremove -y \ @@ -506,12 +508,14 @@ ENV \ DISPLAY_SIZEH="900" \ DISPLAY_SIZEW="1600" \ DISPLAY_VIDEO_PORT="DFP" \ - DISPLAY=":55" \ - NVIDIA_DRIVER_CAPABILITIES="all" \ - NVIDIA_VISIBLE_DEVICES="all" \ + DISPLAY=":55" +ENV \ XORG_SOCKET_DIR="/tmp/.X11-unix" \ XDG_RUNTIME_DIR="/tmp/.X11-unix/run" \ XDG_DATA_DIRS="/home/default/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share/:/usr/share/" +ENV \ + NVIDIA_DRIVER_CAPABILITIES="all" \ + NVIDIA_VISIBLE_DEVICES="all" # Set pulseaudio environment variables ENV \ diff --git a/overlay/etc/cont-init.d/10-setup_user.sh b/overlay/etc/cont-init.d/10-setup_user.sh index 70dfbd1..3e87474 100644 --- a/overlay/etc/cont-init.d/10-setup_user.sh +++ b/overlay/etc/cont-init.d/10-setup_user.sh @@ -102,8 +102,4 @@ echo "${USER}:${USER_PASSWORD}" | chpasswd mkdir -p /tmp/runtime-root chown root:root /tmp/runtime-root -# Fix some flatpak quirks (not sure what is happening here) -mount -t proc none /proc -flatpak list - -echo "DONE" +echo "DONE" \ No newline at end of file