0

用 Docker 审查了这个 mediasoup v3并且有一些稍微不同的地方,因为我得到了一个不同的错误:

ERROR: for voice_server Cannot start service voice_server: Ports are not available: listen tcp 0.0.0.0:49163: bind: address already in use(端口随负载变化)

在使用 mediasoup 运行容器化版本的服务器时,与没有将其容器化时相比,我也会丢失音频输出。我试图将network_mode主机设置为避免转发端口无济于事的一种方式。谢谢!docker compose 文件如下:

services:
  voice_server:
    build: ./voice
    environment: 
      - WEBRTC_LISTEN_IP=127.0.0.1
      - RABBITMQ_URL=amqp://guest:guest@rabbitmq:5672
    restart: unless-stopped
    ports:
      - 3000:3000
      - "40000-49999:40000-49999"

  backend:
    build: ./backend
    env_file: ./backend/.env
    restart: unless-stopped
    ports:
      - 4001:4001

  rabbitmq:
    image: rabbitmq:3-management-alpine
    container_name: rabbitmq
    volumes:
      - ./.docker/rabbitmq/data/:/var/lib/rabbitmq/
      - ./.docker/rabbitmq/logs/:/var/log/rabbitmq/
    environment:
      RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE}
    ports:
      - 5672:5672
      - 15672:15672

语音服务器的 dockerfile 是:

FROM node:12

WORKDIR /usr/src/app

COPY package.json package-lock.json ./

RUN npm i

COPY . .

RUN npm run build

ENV NODE_ENV production
CMD [ "node", "dist/index.js" ]
USER node

mediasoup 的配置是

export const config = {
  httpIp: "0.0.0.0",
  httpPort: 3000,
  httpPeerStale: 360000,

  mediasoup: {
    worker: {
      rtcMinPort: 40000,
      rtcMaxPort: 49999,
      logLevel: "debug",
      logTags: [
        "info",
        "ice",
        "dtls",
        "rtp",
        "srtp",
        "rtcp",
      ] as WorkerLogTag[],
    },
    router: {
      mediaCodecs: [
        {
          kind: "audio",
          mimeType: "audio/opus",
          clockRate: 48000,
          channels: 2,
        },
      ] as RtpCodecCapability[],
    },

    webRtcTransport: {
      listenIps: [
        {
          ip: process.env.WEBRTC_LISTEN_IP,
          announcedIp: undefined,
        },
        {
          ip: listenIp,
          announcedIp: undefined,
        },
      ] as TransportListenIp[],
      initialAvailableOutgoingBitrate: 800000,
    },
  },
} as const;
4

0 回答 0