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

docker compose无法调用外部URL导致Azure AD身份认证报错如何解决?

Docker Compose环境Azure AD认证域名解析报错解决方案

问题根因

该问题属于Docker Compose v1.29.x版本的已知缺陷,此版本内置的DNS转发逻辑存在缓存失效问题,容器运行一段时间后会无法正常解析外部公网域名。单独运行容器时调用的是Docker默认DNS服务,不会触发该bug。

解决方案

永久修复

直接升级Docker Compose到v2.0及以上版本即可解决该DNS相关问题,当前Docker Compose v2已作为Docker官方内置插件,可通过升级Docker桌面版或单独安装Compose v2完成更新。

临时规避方案

若暂时无法升级版本,可使用以下任意方案临时解决:

  • 手动指定容器DNS服务器
    在docker-compose.yml的服务配置中增加公共DNS配置,示例如下:
version: '3.4'
services:
  webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: .
      dockerfile: WebApplication1/Dockerfile
    # 新增DNS配置
    dns:
      - 8.8.8.8
      - 114.114.114.114

修改后执行docker-compose up -d重启容器生效。

  • 调整JWT认证配置降低DNS查询频率
    修改Startup.cs中的认证配置,延长OpenID配置缓存时长,减少公网请求次数:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(Configuration, "AzureAd");

// 新增JWT参数配置
services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, options =>
{
    // 延长配置自动刷新间隔,默认24小时,可按需调整
    options.AutomaticRefreshInterval = TimeSpan.FromHours(24);
    options.RefreshInterval = TimeSpan.FromHours(12);
    options.BackchannelTimeout = TimeSpan.FromSeconds(30);
});
  • 临时重启容器
    开发环境遇到报错时,可执行docker-compose restart命令重启容器快速恢复服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:03