penta před 4 dny
rodič
revize
9b890b69b8
1 změnil soubory, kde provedl 55 přidání a 5 odebrání
  1. 55 5
      Dockerfile

+ 55 - 5
Dockerfile

@@ -7,7 +7,6 @@
 
 ARG DISTRIB_RELEASE=24.04
 ARG SELKIES_IMAGE=ghcr.io/selkies-project/selkies/py-build:main
-ARG SELKIES_WEB_IMAGE=ghcr.io/selkies-project/selkies/selkies-web:main
 
 ARG SELKIES_GIT_REF=main
 ARG NVIDIA_VAAPI_DRIVER_VERSION=latest
@@ -18,8 +17,6 @@ ARG NVIDIA_VAAPI_DRIVER_VERSION=latest
 # -----------------------------------------------------------------------------
 
 FROM ${SELKIES_IMAGE} AS selkies-build
-FROM ${SELKIES_WEB_IMAGE} AS selkies-web
-
 
 # -----------------------------------------------------------------------------
 # Selkies joystick interposer
@@ -141,6 +138,58 @@ RUN set -eux; \
     meson compile -C build; \
     DESTDIR=/out meson install -C build
 
+# -----------------------------------------------------------------------------
+# Build the Selkies web frontend from the official source repository
+# -----------------------------------------------------------------------------
+
+FROM docker.io/library/node:22-bookworm-slim AS selkies-web-builder
+
+ARG DEBIAN_FRONTEND=noninteractive
+ARG SELKIES_GIT_REF=main
+ARG SELKIES_MODE=websockets
+ARG SELKIES_UPLOAD_DIR=/home/ubuntu/Desktop
+
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
+
+RUN apt-get update \
+    && apt-get install --no-install-recommends -y \
+        ca-certificates \
+        cmake \
+        curl \
+        git \
+    && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /tmp/selkies
+
+RUN curl -fsSL \
+        "https://github.com/selkies-project/selkies/archive/${SELKIES_GIT_REF}.tar.gz" \
+        -o /tmp/selkies.tar.gz \
+    && tar -xzf /tmp/selkies.tar.gz \
+        --strip-components=1 \
+        -C /tmp/selkies \
+    && rm -f /tmp/selkies.tar.gz
+
+RUN set -eux; \
+    cd /tmp/selkies/addons/selkies-web-core; \
+    npm install; \
+    npm run build; \
+    \
+    cd /tmp/selkies/addons/selkies-dashboard; \
+    cp ../selkies-web-core/dist/selkies-core.js src/; \
+    npm install; \
+    SELKIES_INJECT=1 \
+    SELKIES_MODE="${SELKIES_MODE}" \
+    SELKIES_UPLOAD_DIR="${SELKIES_UPLOAD_DIR}" \
+        npm run build; \
+    \
+    mkdir -p dist/src; \
+    cp ../selkies-web-core/dist/selkies-core.js dist/src/; \
+    cp ../universal-touch-gamepad/universalTouchGamepad.js dist/src/; \
+    cp -r ../selkies-web-core/dist/jsdb dist/; \
+    \
+    mkdir -p /out; \
+    cp -a dist/. /out/; \
+    test -f /out/index.html
 
 # -----------------------------------------------------------------------------
 # Final image
@@ -428,9 +477,10 @@ ENV PATH="/opt/selkies/bin:/usr/local/nvidia/bin:${PATH}" \
 # Install the Selkies wheel from the official stable build image.
 COPY --from=selkies-runtime-builder /opt/selkies /opt/selkies
 
+
 COPY --chown=${USER_UID}:${USER_GID} \
-    --from=selkies-web \
-    /usr/share/nginx/html/ \
+    --from=selkies-web-builder \
+    /out/ \
     /opt/selkies-web/
 
 COPY --from=selkies-js-interposer-builder \