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

