Docker:无法访问服务器

Docker:无法访问服务器,docker,.net-core,microservices,Docker,.net Core,Microservices,这里有一点背景故事。我使用microservices架构实现了两个web api。我正在尝试通过HTTPS访问我的微服务。这些微服务是使用.NETCore开发的,所以根据微软的文档,为了实施HTTPS,我需要配置Kestrel。下面是我是怎么做的 .UseKestrel(options => { options.Listen(IPAddress.Loopback, 5000); options.List

这里有一点背景故事。我使用microservices架构实现了两个web api。我正在尝试通过HTTPS访问我的微服务。这些微服务是使用.NETCore开发的,所以根据微软的文档,为了实施HTTPS,我需要配置Kestrel。下面是我是怎么做的

.UseKestrel(options =>
            {
                options.Listen(IPAddress.Loopback, 5000);
                options.Listen(IPAddress.Loopback, 5001, listenOptions =>
                {
                    listenOptions.UseHttps("cert.pfx", "pwd");
                });
            }) 
为了简单起见,我单独使用kestrel并跳过反向代理。我当然会将Nginx作为反向代理,但这是未来的工作。我在当地进行了测试,效果不错。然后,我把它部署到Docker上。这是docker-compose.override文件

version: '3.4'

services:
dataservice:
  environment:
    - ASPNETCORE_ENVIRONMENT=Development
    - ASPNETCORE_URLS=https://+:443;http://+:80
  ports:
    - "5000:80"
    - "5001:443"
在dockerfile中,暴露端口5000和5001。我将项目构建到图像中,并在docker上运行它,使用
docker run-it--rm-p5000:80--name*name**imagename*
。Docker显示
正在收听:http://127.0.0.1:5000
正在收听:https://127.0.0.1:5001
。现在的问题是,撇开https部分不谈,这些API甚至不能通过http访问。浏览器仅显示
此页面不工作127.0.0.1未发送任何数据。错误\u空\u响应
。我在这里发现了一个类似的问题,这是关于服务器应该听0.0.0.0的。虽然我不完全理解原因,但我将红隼的配置改为

options.Listen(IPAddress.Any, 5000);
再次生成并运行docker图像,docker显示
正在收听:http://0.0.0.0:5000
,它仍然不起作用。我还试图用
localhost
替换IP,它没有用。我没有使用
。UseHttpsRedirection()
,https应该与问题无关


我是否缺少任何配置或做错了什么?如果有人能透露一些情况,那将非常有帮助。提前谢谢。

您应该在容器内的80和443上收听,即
选项。收听(IPAddress.Any,80)因为这个docker声明

ports: 
   - "5000:80"

表示将本地端口80(源代码中的端口)导出到外部端口5000,而不是相反。

谢谢,它可以工作。HTTPS功能也在发挥作用。