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"]