|
|
@@ -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 \
|