Install script and supervisor init

This commit is contained in:
Manuel 2022-10-02 20:39:42 +02:00
parent e17315e3d2
commit a70377b94a
Signed by: Manuel
GPG key ID: 4085037435E1F07A
6 changed files with 83 additions and 18 deletions

View file

@ -4,30 +4,35 @@ COPY ./aur-packages/srcpkgs/cage-vi/ /tmp/cage/
RUN pacman -Syu --noconfirm base-devel \ RUN pacman -Syu --noconfirm base-devel \
&& chown -R nobody: /tmp/cage/ \ && chown -R nobody: /tmp/cage/ \
&& source /tmp/cage/PKGBUILD && pacman -Syu --noconfirm ${depends[@]} ${makedepends[@]} \ && source /tmp/cage/PKGBUILD && pacman -S --noconfirm ${depends[@]} ${makedepends[@]} \
&& runuser -u nobody -- sh -c "cd /tmp/cage/ && makepkg -c --noconfirm" && runuser -u nobody -- sh -c "cd /tmp/cage/ && makepkg -c --noconfirm"
FROM binhex/arch-base:latest FROM binhex/arch-base:latest
COPY --from=build /tmp/cage/*.pkg.tar.zst /tmp/cage/ COPY --from=build /tmp/cage/*.pkg.tar.zst /tmp/cage/
RUN pacman -Syu --noconfirm mesa mesa-libgl wayvnc seatd \ COPY build/root/*.sh /root/
xorg-xwayland noto-fonts gnu-free-fonts \ COPY config/ /config/
&& pacman -U --noconfirm /tmp/cage/*.pkg.tar.zst \ COPY supervisor/*.conf /etc/supervisor/conf.d/
&& yes y | pacman -Scc >/dev/null 2>&1 \
&& rm -rf /usr/share/man/* /usr/share/doc/* \
/var/cache/pacman/pkg/* /var/lib/pacman/sync/* \
/tmp/*
COPY wayvnc.conf /etc/wayvnc/config RUN chmod +x /root/*.sh && \
/bin/bash /root/install.sh
ENV PGID=10000 \ # TODO, move to install.sh
PUID=10000 \ ENV PUID=10000 \
HOME=/home/user PGID=10000 \
UMASK=022 \
WAYLAND_DISPLAY=wayland-0 \
XDG_RUNTIME_DIR=/run/user/${PUID} \
WLR_BACKENDS=headless \
WLR_NO_HARDWARE_CURSORS=1 \
WLR_DRM_DEVICES=/dev/dri/card0
RUN useradd -U -u ${PGID} -G users,seat,video,render -d "${HOME}" user \ RUN usermod -a -G seat,video,render nobody \
&& mkdir -p /run/user/${PGID} \ && mkdir -p ${XDG_RUNTIME_DIR} \
&& chown user: /run/user/${PGID} \ && chown ${PUID}:${PGID} ${XDG_RUNTIME_DIR} \
&& chmod 7700 /run/user/${PGID} && chmod 7700 ${XDG_RUNTIME_DIR}
WORKDIR / EXPOSE 5900
CMD ["/bin/bash", "/usr/local/bin/init.sh"]

@ -1 +1 @@
Subproject commit 5f454d6520b5709b8e0cca6de5a9d40ad6b8f323 Subproject commit a5c019afc5a210a4296a6474257f9b9a9427b31d

52
build/root/install.sh Normal file
View file

@ -0,0 +1,52 @@
#!/bin/bash
# exit script if return code != 0
set -e
# build scripts
####
# download build scripts from github
curl --connect-timeout 5 --max-time 600 --retry 5 --retry-delay 0 --retry-max-time 60 -o /tmp/scripts-master.zip -L https://github.com/binhex/scripts/archive/master.zip
# unzip build scripts
unzip /tmp/scripts-master.zip -d /tmp
# move shell scripts to /root
mv /tmp/scripts-master/shell/arch/docker/*.sh /usr/local/bin/
# detect image arch
####
OS_ARCH=$(cat /etc/os-release | grep -P -o -m 1 "(?=^ID\=).*" | grep -P -o -m 1 "[a-z]+$")
if [[ ! -z "${OS_ARCH}" ]]; then
if [[ "${OS_ARCH}" == "arch" ]]; then
OS_ARCH="x86-64"
else
OS_ARCH="aarch64"
fi
echo "[info] OS_ARCH defined as '${OS_ARCH}'"
else
echo "[warn] Unable to identify OS_ARCH, defaulting to 'x86-64'"
OS_ARCH="x86-64"
fi
# pacman packages
####
# define pacman packages
pacman_packages="mesa mesa-libgl wayvnc seatd xorg-xwayland noto-fonts gnu-free-fonts"
# install pre-reqs
pacman -S --needed $pacman_packages --noconfirm
# install locally built cage
pacman -U --noconfirm /tmp/cage/*.pkg.tar.zst
# env vars
####
# TODO
mkdir -p /config
# cleanup
cleanup.sh

4
supervisor/cage.conf Normal file
View file

@ -0,0 +1,4 @@
[program:cage]
user = nobody
command = /usr/bin/cage %(ENV_APP)s
priority = 50

4
supervisor/wayvnc.conf Normal file
View file

@ -0,0 +1,4 @@
[program:wayvnc]
user = nobody
command = /usr/bin/wayvnc -C /config/wayvnc/config -g
priority = 100