pur1fying / blue_archive_auto_script

用于实现蔚蓝档案自动化
https://blog.lzwi.fun/blue_archive_auto_script/
GNU General Public License v3.0
860 stars 55 forks source link

[Discuss] [Deploy] 于Linux平台使用Docker部署BAAS之测试 #199

Open MC-ALL opened 1 day ago

MC-ALL commented 1 day ago

宿主环境

测试环境

部署 redroid

docker-compose.yml 如下所示。 如遇打开 app 时卡网络检测,开关 - net.ipv6.conf.all.disable_ipv6=0 此项可临时解决。

services:
  redroid:
    image: redroid/redroid:12.0.0-latest
    stdin_open: true
    tty: true
    privileged: true
    container_name: redroid
    cap_add:
      - NET_ADMIN
      - NET_RAW
      - MKNOD
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
    ports:
      - 127.0.0.1:5555:5555 # ADB通訊埠,為加強安全性,設定為只監聽本機localhost的通訊埠
      - 127.0.0.1:5050:5050
    volumes:
      - ./redroid-12-data:/data # 資料存放在目前目錄下
      - /dev/net/tun:/dev/tun
    command:
      - androidboot.redroid_width=720 # 手機解析度
      - androidboot.redroid_height=1280
      - androidboot.redroid_dpi=320
      - androidboot.redroid_fps=60
      - androidboot.use_memfd=true
      - androidboot.redroid_net_ndns=1 
      - androidboot.redroid_net_dns1=223.5.5.5
      - androidboot.redroid_gpu_mode=host # 啟用宿主機的GPU硬體加速,host為啟用GPU加速,guest為軟體渲染
      - ro.product.cpu.abilist0=x86_64,arm64-v8a,x86,armeabi-v7a,armeabi # 設定libndk相關
      - ro.product.cpu.abilist64=x86_64,arm64-v8a
      - ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi
      - ro.dalvik.vm.isa.arm=x86
      - ro.dalvik.vm.isa.arm64=x86_64
      - ro.enable.native.bridge.exec=1
      - ro.dalvik.vm.native.bridge=libndk_translation.so
      - ro.ndk_translation.version=0.2.3

部署 ubuntu_novnc_test

Dockerfile 如下所示。 如需参考以下内容,务必确保硬碟剩余空间大于 12GB,网络畅通。

FROM ubuntu:latest

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y xvfb x11vnc novnc x11-apps git openbox libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-shape0 libxcb-xinerama0 libxcb-xkb1 libsm6 libxkbcommon-x11-0 libdbus-1-3 && add-apt-repository -y ppa:deadsnakes/ppa && apt-get install -y python3.9 python3.9-venv

WORKDIR /home

RUN git clone https://gitee.com/pur1fy/blue_archive_auto_script.git

WORKDIR /home/blue_archive_auto_script

SHELL ["/bin/bash", "-c"]

RUN python3.9 -m venv env && source env/bin/activate && pip install -r ./requirements-linux.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --no-warn-script-location

ENTRYPOINT ["/bin/bash"]

docker-compose.yml 如下所示。 如需参考以下内容,redroid 容器务必于此容器前启动 ,否则此容器无法获取网络。

services:
  ubuntu:
    image: ubuntu_novnc_test:latest
    container_name: ubuntu_novnc_test
    tty: true
    stdin_open: true
    privileged: true
    network_mode: "container:redroid"
    # ports:
    #   - "127.0.0.1:5050:5050"
    #   - "127.0.0.1:5555:5555"
    volumes:
      - ./blue_archive_auto_script:/home/blue_archive_auto_script
    restart: on-failure

部署后

查看 redroid 容器日志,使用 logcat 。

sudo docker exec <Container ID> logcat

根据项目说明,使用相同显示方式,为利于使用,增加 noVNC 。

app --> Xvfb --> x11vnc --> noVnc --> websockify --> Host Browser 

进入 ubuntu 容器。

sudo decker exec -it <Container ID> bash

以下指令仅供测试,如需排障,请自行去除末尾参数。

Xvfb :7 -screen 0 1920x1080x24 -nolisten tcp >/dev/null 2>&1 &
export DISPLAY=:7
openbox >/dev/null 2>&1 &
x11vnc -listen 0.0.0.0 -rfbport 5900 -noipv6 -passwd password -display :7 >/dev/null 2>&1 &
websockify --web /usr/share/novnc 5050 localhost:5900 >/dev/null 2>&1 &
xclock

于浏览器键入 localhost:5050/vnc.html 进入 noVNC 页面,可以看见左上角用于测试的时钟。

source env/bin/activate
python window.py

终止时钟,运行脚本入口,于浏览器可以看见程式界面,使用 openbox 作为 WM 时可以拖拽或是全屏化界面。

附图

屏幕截图_20241203_172303

Kiramei commented 23 hours ago
  1. 之前我测试软件包测试下载体积为7-8GB左右,大头在pytorch(被CNOCR依赖)依赖GPU运算方向库,如CUDA等。如果能够有更好的减小包的方法可能更好;
  2. 另一个优化分支是将Debian这个基类容器替换为BusyBox或者其他可用轻量级库;
  3. 经测试,docker-compose.yml 无法使用,adb连接的时候会失败。

宿主环境

MC-ALL commented 21 hours ago
  1. 之前我测试软件包测试下载体积为7-8GB左右,大头在pytorch(被CNOCR依赖)依赖GPU运算方向库,如CUDA等。如果能够有更好的减小包的方法可能更好;

    1. 另一个优化分支是将Debian这个基类容器替换为BusyBox或者其他可用轻量级库;

    2. 经测试,docker-compose.yml 无法使用,adb连接的时候会失败。

宿主环境

* OS: Ubuntu 24.04.1 LTS

* Kernel: 6.8.0-49-generic

* WM: X11 (Xorg)

* DE: GNOME 46

* CPU: 型号名称: 13th Gen Intel(R) Core(TM) i5-13600KF

* GPU: NVIDIA Corporation AD104 [GeForce RTX 4070] (rev a1)

* Docker Version: 27.3.1

* Docker Compose: 2.20.0
  1. 包没什么优化余地,当然对于不需要或是没有 CUDA 的机器可以仅使用 CPU 版本的 torch 。
  2. 屏幕共享这种方式非常逆天,而且图形化界面需要的依赖非常多,到头来还不如用 FastAPI 之类的写一个 WebUI 简单。哪天我有空写个 Demo 看看效果。
  3. 没有日志,想帮也帮不了。可以进容器看看什么情况。
Kiramei commented 21 hours ago
  1. 之前我测试软件包测试下载体积为7-8GB左右,大头在pytorch(被CNOCR依赖)依赖GPU运算方向库,如CUDA等。如果能够有更好的减小包的方法可能更好;

    1. 另一个优化分支是将Debian这个基类容器替换为BusyBox或者其他可用轻量级库;

    2. 经测试,docker-compose.yml 无法使用,adb连接的时候会失败。

宿主环境

* OS: Ubuntu 24.04.1 LTS

* Kernel: 6.8.0-49-generic

* WM: X11 (Xorg)

* DE: GNOME 46

* CPU: 型号名称: 13th Gen Intel(R) Core(TM) i5-13600KF

* GPU: NVIDIA Corporation AD104 [GeForce RTX 4070] (rev a1)

* Docker Version: 27.3.1

* Docker Compose: 2.20.0
  1. 包没什么优化余地,当然对于不需要或是没有 CUDA 的机器可以仅使用 CPU 版本的 torch 。

  2. 屏幕共享这种方式非常逆天,而且图形化界面需要的依赖非常多,到头来还不如用 FastAPI 之类的写一个 WebUI 简单。哪天我有空写个 Demo 看看效果。

  3. 没有日志,想帮也帮不了。可以进容器看看什么情况。

关于2,@rainux 写过一个cli的程序,基于这个Cli应该可以搞一份出来。webui,挺ok的应该。