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

将Docker Compose部署至Azure App Service后多应用端口访问异常求助

问题分析与解决方案

Azure App Service 多容器 Web App 仅对外暴露 80/443 端口,你在 Docker Compose 中指定的 7286、7205 等自定义端口无法直接从外部访问;同时容器内部需通过服务名而非端口/外部域名通信,这是导致你无法访问 API 的核心原因。以下是具体解决步骤:

1. 调整 Docker Compose 配置

移除不必要的对外端口映射,指定主容器并配置内部通信:

version: '3.4'

services:
  appdbtest:
    container_name: app-dbtest
    image: mcr.microsoft.com/mssql/server:2019-latest
    # 数据库仅内部容器访问,无需对外暴露端口(若需外部连接建议用Azure SQL/VNet)
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=password@12345#

  web_app:
    image: testapp00.azurecr.io/web:1.6
    ports:
      - 80:81  # 将外部80端口转发至web_app容器的81端口
    environment:
      - AZURE_WEBAPP_DEFAULT_STATIC_SITE=true  # 标记为主容器,接收外部流量
      - API_INTERNAL_URL=http://api_app:82      # 传递API内部地址给前端

  api_app:
    image: testapp00.azurecr.io/api:3.1
    # 无需对外暴露端口,内部通过服务名api_app访问
    depends_on:
      - appdbtest
    environment:
      - DB_HOST=appdbtest
      - DB_NAME=AssessmentEngineer3Api
      - DB_SA_PASSWORD=password@12345#

2. 配置前端与反向代理

前端调用 API 时避免硬编码端口/域名,改用相对路径(如 /api/xxx),并在 web_app 中添加反向代理规则,将 API 请求转发至内部容器:

以 ASP.NET Core 为例,在 Program.cs 中添加反向代理:

// 注册反向代理服务
builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));

// 启用反向代理路由
app.MapReverseProxy();

在 web_app 的 appsettings.json 中配置路由规则:

"ReverseProxy": {
  "Routes": {
    "api_route": {
      "ClusterId": "api_cluster",
      "Match": {
        "Path": "/api/{**catch-all}"
      }
    }
  },
  "Clusters": {
    "api_cluster": {
      "Destinations": {
        "api_destination": {
          "Address": "http://api_app:82/"
        }
      }
    }
  }
}

3. 补充 App Service 配置

在 Azure 门户的 App Service 应用设置中添加 WEBSITES_PORT=81,明确告知平台将外部流量转发至 web_app 容器的 81 端口。

可选替代方案

若需直接对外暴露 API 服务,可:

  • 为 API 单独部署一个 App Service
  • 使用 Azure Container Apps(支持多容器多对外端口、自定义路由)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:22:13