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
相关产品推荐
相关产品推荐

