4

我试图在 docker 中运行一个2 WebRTC 示例(使用 mediasoup)

我想运行两台服务器,因为我正在跨一组实例进行视频通话!

我的错误:

你有没有看到这个错误:createProducerTransport null 错误:端口绑定失败,因为地址不可用[传输:udp,ip:'172.17.0.1',端口:50517,尝试:1/50000]

我认为这与设置docker网络有关?

码头工人-compose.yml

version: "3"
services:
  db:
    image: mysql
    restart: always
  app:
    image: app
    build: .
    ports:
      - "1440:443"
      - "2000-2020"
      - "80:8080"
    depends_on:
      - db 
  app2:
    image: app
    build: .
    ports:
      - "1441:443"
      - "2000-2020"
      - "81:8080"
    depends_on:
      - db 

Dockerfile

FROM node:12

WORKDIR /app
COPY . .

CMD npm start
4

3 回答 3

0

您应该将 rtc 最小和最大端口设置为 2000 和 2020 以进行测试。我猜你也没有转发这些端口。在 docker-compose 中使用2000-2020:2000-2020还要确保listenIps正确设置。

于 2020-11-10T09:49:49.653 回答
0

它说它无法绑定地址,因此可能是导致问题的ip或端口。

ip 似乎是 docker 实例的 ip。尽管 docker 实例位于两台不同的机器上,但它应该是服务器的 ip,而不是 docker 实例。(在 mediasoup 设置中)

还有一些 rtcp 连接的端口必须在 docker 实例中打开。它们通常也在 mediasouo 配置文件中。通常需要打开几百个端口。

于 2020-09-19T12:14:46.017 回答
0

如果您在 docker 中运行 mediasoup,则安装 mediasoup 的容器应在网络模式主机中运行。

这在这里解释:

如何为 docker compose 使用主机网络?

和官方文档

https://docs.docker.com/network/host/

此外,您应该注意 mediasoup 配置设置webRtcTransport.listenIpsplainRtpTransport.listenIp它们应该告诉客户端您的 mediasoup 服务器正在侦听哪个 IP 地址。

于 2021-05-18T14:55:35.773 回答