30 lines
1.1 KiB
Docker
30 lines
1.1 KiB
Docker
FROM node:25.7.0-bookworm
|
|
|
|
# System deps: ADB for device communication, build tools for native modules (node-pty)
|
|
RUN apt-get update && \
|
|
apt-get install -y android-tools-adb python3 make g++ git && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Clone and build ws-scrcpy
|
|
WORKDIR /build
|
|
RUN git clone --depth 1 https://github.com/NetrisTV/ws-scrcpy.git . && \
|
|
npm install && \
|
|
npm run dist:prod
|
|
|
|
# Set up runtime
|
|
WORKDIR /app
|
|
RUN cp -r /build/dist/* . && \
|
|
npm install && \
|
|
rm -rf /build
|
|
|
|
# Config: Android tracker on, no iOS, HTTP on port 8000 (Traefik handles TLS)
|
|
RUN printf 'runGoogTracker: true\nrunApplTracker: false\n\nserver:\n - secure: false\n port: 8000\n' > /app/config.yaml
|
|
|
|
# Entrypoint: start ADB, connect to device if configured, then launch
|
|
RUN printf '#!/bin/bash\nset -e\nadb start-server\nif [ -n "$ADB_DEVICE_HOST" ]; then\n echo "Connecting to ADB device at $ADB_DEVICE_HOST:${ADB_DEVICE_PORT:-5555}"\n adb connect "$ADB_DEVICE_HOST:${ADB_DEVICE_PORT:-5555}"\n sleep 2\n adb devices\nfi\nexec node index.js\n' > /entrypoint.sh && \
|
|
chmod +x /entrypoint.sh
|
|
|
|
EXPOSE 8000
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|