如何修改调试模式下ASP.NET Core API Docker的运行端口
ASP.NET Core Docker 调试自定义端口设置方法
VS调试Docker托管的.NET应用时自动分配的动态端口由启动配置控制,和Dockerfile中的EXPOSE声明无关,按以下步骤修改即可固定端口:
1. 修改launchSettings.json配置(单容器部署场景)
- 打开项目
Properties目录下的launchSettings.json文件,找到Docker相关的启动配置节点 - 新增/修改以下配置项,以固定HTTPS端口为5001、HTTP端口为5000为例:
{ "profiles": { "Docker": { "commandName": "Docker", "launchBrowser": true, "launchUrl": "https://localhost:5001/swagger", "DockerfileRunArguments": "-p 5000:80 -p 5001:443", "environmentVariables": { "ASPNETCORE_URLS": "https://+:443;http://+:80" }, "httpPort": 5000, "sslPort": 5001, "useSSL": true } } }
DockerfileRunArguments里的-p 宿主机端口:容器端口是端口映射规则,需和下方的httpPort、sslPort值保持一致
2. 修改docker-compose.override.yml配置(Docker Compose部署场景)
如果你用了Docker Compose托管服务,需要修改根目录下的docker-compose.override.yml文件:
services: 你的项目服务名: ports: - "5000:80" - "5001:443" environment: - ASPNETCORE_URLS=https://+:443;http://+:80
3. 验证生效
修改完成后,停止当前运行的Docker容器,重启VS调试即可,应用将固定运行在你配置的宿主机端口。
注意:Dockerfile中的
EXPOSE仅做端口声明使用,不会影响实际的端口映射规则,只需确保声明的端口和容器内ASPNETCORE_URLS配置的监听端口一致即可。
内容的提问来源于stack exchange,提问作者Peter Morris
相关产品推荐
相关产品推荐

