You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker-compose部署Discord机器人连接Lavalink出现ClientConnectorError如何解决

问题根因
  • Docker 容器的127.0.0.1指向的是容器自身的网络栈,而非宿主机或同网络下的其他容器,所以bot容器内访问127.0.0.1:2333根本找不到Lavalink服务
  • Docker Compose会为同一项目下的所有服务自动创建专属私有网络,同网络下的服务可以直接用服务名作为域名互相访问,无需依赖端口映射到宿主机
  • 你当前的depends_on仅判断Lavalink容器是否启动,无法判断Lavalink进程是否完成初始化、端口是否正常监听,过早发起连接也会触发报错
修复步骤

1. 修改bot连接地址

把music.py中Lavalink连接地址从127.0.0.1替换为Lavalink的服务名lavalink:

await self.client.wavelink.initiate_node(host='lavalink',
                                    port=2333,
                                    rest_uri='http://lavalink:2333',
                                    password="pass",
                                    identifier='MAIN',
                                    region='us_central')

2. 优化docker-compose配置

给Lavalink添加健康检查,确保bot仅在Lavalink服务正常运行后再启动,端口映射可根据自身需求保留或删除(容器内部互访不需要端口映射):

version: "3.9"

services:
  bot:
    build:
      context: .
      dockerfile: Dockerfile
    restart: on-failure
    depends_on:
      lavalink:
        condition: service_healthy

  lavalink:
    container_name: lavalink
    image: fredboat/lavalink:master
    volumes:
      - ./Lavalink/application.yml:/opt/Lavalink/application.yml
    # 仅需宿主机访问Lavalink时保留以下端口配置,否则可删除
    # ports:
    #   - "2333:2333"
    restart: always
    healthcheck:
      test: "wget --no-verbose --tries=1 --spider http://localhost:2333/version || exit 1"
      interval: 5s
      timeout: 10s
      retries: 5

3. 验证Lavalink配置

确认你的application.yml中以下配置正确:

  • 监听地址为0.0.0.0(允许容器外部访问)
  • 监听端口为2333
  • 验证密码为pass

内容的提问来源于stack exchange,提问作者Holy Tanukis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:54:01