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

API在VS2019本地可响应但Docker容器内无法响应Postman请求

ASP.NET Core API 容器化后无法响应外部请求问题

问题现象

将简单API以Docker容器运行时,项目构建、容器启动均正常,但无法响应Postman请求,VS2019本地运行可正常响应。

环境配置

  • Docker Desktop 4.X Linux容器
  • VS2019

相关配置信息

API接口代码

[HttpGet("basic")]
[AllowAnonymous]
public IActionResult Basic()
{
   return Ok("Alive");
}

Postman请求地址

GET http://localhost:5150/HealthCheck/basic

Docker Compose配置

version: "3"

services:
  api:
    #为简化省略容器名等配置
    ports:
        - "5150:5150"
    networks:
        - backend                    
networks:
  backend:

Dockerfile配置

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 5150
#为简化省略其余配置
ENTRYPOINT ["dotnet", "TestingDocker.API.dll"]

本地启动配置(launch settings)

{
  "iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
    "applicationUrl": "http://localhost:5150/",
    "sslPort": 0
  }
}

根因定位

查看容器运行日志发现输出:

[12:49:29 INF] Now listening on: http://[::]:80

对镜像执行docker inspect查看环境变量,确认微软官方ASP.NET Core基础镜像默认配置了ASPNETCORE_URLS=http://+:80,程序实际监听端口为80,和Dockerfile声明暴露的5150、docker-compose配置的端口映射不匹配,导致请求无法转发到容器内的服务。
此前尝试查找Hyper-V虚拟网卡IP访问均无效,本地Mongo镜像可正常运行,排除Docker Desktop本身网络故障。

解决方案

修改Dockerfile中的ENTRYPOINT配置,显式指定程序监听端口为5150:

ENTRYPOINT ["dotnet", "DockerTest.API.dll", "--urls", "http://+:5150"]

修改配置后需执行以下命令,避免镜像缓存导致配置不生效:

  • 无缓存重新构建镜像:docker-compose build --no-cache
  • 强制重建容器并后台启动:docker-compose up -d --force-recreate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:45:03