Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

4.0 KiB

Live 离线 Docker 部署

目标域名:

https://oa.live.educlouddata.com/

SFU WebSocket 入口:

wss://oa.live.educlouddata.com/ws_webrtc_sfu_api_test/?roomId=xxx&peerId=xxx

1. 本地打包并保存镜像

在 Windows 本地执行:

cd D:\work\yzx_oa_sfu
.\scripts\docker-build-save.ps1

默认生成:

D:\work\yzx_oa_sfu\yzx-oa-sfu_0.1.0-live_linux-amd64.tar

如果要手动执行,等价命令是:

cd D:\work\yzx_oa_sfu
docker build --platform linux/amd64 -t yzx-oa-sfu:0.1.0-live .
docker save -o yzx-oa-sfu_0.1.0-live_linux-amd64.tar yzx-oa-sfu:0.1.0-live

2. 上传到服务器

上传以下文件到服务器同一个目录,例如 /opt/yzx_oa_sfu

yzx-oa-sfu_0.1.0-live_linux-amd64.tar
docker-compose.image.yml
.env
scripts/docker-load-run.sh(可选)

.env 使用本仓库的 .env.live 内容即可。服务器上可以这样放:

mkdir -p /opt/yzx_oa_sfu
cd /opt/yzx_oa_sfu

如果上传的是 .env.live,服务器上改名:

cp .env.live .env

3. 服务器 load 并启动

先确认服务器是否支持 Compose v2:

docker compose version

如果提示 docker: 'compose' is not a docker command 或类似 unknown shorthand flag: 'f' in -f,说明这台服务器没有 Docker Compose v2 插件。可以直接看本节后面的“不使用 compose 启动”。

cd /opt/yzx_oa_sfu
docker load -i yzx-oa-sfu_0.1.0-live_linux-amd64.tar
SFU_IMAGE=yzx-oa-sfu:0.1.0-live docker compose -f docker-compose.image.yml up -d

也可以使用脚本:

cd /opt/yzx_oa_sfu
bash scripts/docker-load-run.sh

脚本会自动判断当前服务器是否支持 docker compose / docker-compose。如果都没有,会退回到下面的 docker run 启动方式。

不使用 compose 启动:

cd /opt/yzx_oa_sfu
docker load -i yzx-oa-sfu_0.1.0-live_linux-amd64.tar
docker rm -f yzx-oa-sfu 2>/dev/null || true
docker run -d \
  --name yzx-oa-sfu \
  --restart unless-stopped \
  --security-opt seccomp=unconfined \
  --env-file .env \
  -p 4443:4443/tcp \
  -p 40000-40100:40000-40100/udp \
  -p 40000-40100:40000-40100/tcp \
  yzx-oa-sfu:0.1.0-live

如果容器反复 Restarting (139),并且 docker logs yzx-oa-sfu 中出现 uv_thread_create / WorkerThreadsTaskRunner 相关断言,通常是旧 CentOS 7 + Docker 1.13 的默认 seccomp 与新 Node 运行时不兼容。请确认启动命令中包含:

--security-opt seccomp=unconfined

如果服务器安装的是旧版 docker-compose 命令,也可以用:

SFU_IMAGE=yzx-oa-sfu:0.1.0-live docker-compose -f docker-compose.image.yml up -d

4. Nginx 反代

oa.live.educlouddata.com 的 HTTPS server block 中加入:

location /ws_webrtc_sfu_api_test/ {
    proxy_pass http://127.0.0.1:4443/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 86400;
    proxy_send_timeout 86400;
}

location /sfu-healthz {
    proxy_pass http://127.0.0.1:4443/healthz;
}

重载 Nginx:

nginx -t && nginx -s reload

5. 防火墙和安全组

需要放行:

4443/tcp
40000-40100/udp
40000-40100/tcp

如果 .env 中修改了 MEDIASOUP_RTC_MIN_PORT / MEDIASOUP_RTC_MAX_PORT,防火墙和 docker-compose.image.yml 映射范围要跟随 .env

6. 检查命令

docker ps | grep yzx-oa-sfu
docker logs -f yzx-oa-sfu
curl http://127.0.0.1:4443/healthz
curl https://oa.live.educlouddata.com/sfu-healthz

7. OA 前端配置

oa/.env.live 已配置:

VITE_SFU_WS_URL = 'wss://oa.live.educlouddata.com/ws_webrtc_sfu_api_test'

如果使用其他 .env.* 构建 OA,也需要加同样的 VITE_SFU_WS_URL