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

Xibo Docker环境中MySQL容器'mysql'域名解析失败求助

解决Xibo Docker部署中'mysql'域名解析失败的问题

以下是几个针对性的解决步骤,按优先级尝试:

1. 改用自定义Docker网络(推荐)

旧版的links功能在新版Docker Compose中已被自定义网络替代,自定义网络自带容器名/别名的DNS解析,稳定性更高。修改你的docker-compose.yml,添加自定义网络配置:

version: '3'
# 定义自定义网络
networks:
  xibo-internal:
    driver: bridge

services:
  cms-web:
    # 其他原有配置...
    networks:
      - xibo-internal
    links:
      - cms-db:mysql
      - cms-xmr:50001
  cms-db:
    # 其他原有配置...
    networks:
      - xibo-internal
  cms-xmr:
    # 其他原有配置...
    networks:
      - xibo-internal

修改后重启所有容器:

docker-compose down && docker-compose up -d

2. 修正容器DNS搜索域

从nslookup结果看,容器默认在搜索mylocaldomain域,导致mysql被拼接成mysql.mylocaldomain查询,而这个域名不存在。可以直接在docker-compose.yml中为web容器关闭DNS搜索域:

cms-web:
  # 其他原有配置...
  dns_search: ""

重启容器后,再测试nslookup mysql,应该能直接解析到cms-db容器的IP。

3. 验证links配置与容器名称

  • 确认docker-compose.yml中cms-db的服务名称拼写完全正确,links里的cms-db:mysql是将cms-db服务映射为mysql别名,服务名称不能出错。
  • 进入db容器验证主机名:
docker exec -it xibo_cms-db_1 hostname

输出应该是cms-db(和服务名一致),如果不一致,检查容器是否是按当前docker-compose.yml启动的。

4. 清除Docker DNS缓存

Docker的内置DNS服务可能存在缓存异常,重启Docker服务可以解决:

  • Linux系统:
systemctl restart docker
  • Windows/macOS:打开Docker Desktop,点击右上角图标选择"Restart"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:53:23