Docker:无法访问服务器
这里有一点背景故事。我使用microservices架构实现了两个web api。我正在尝试通过HTTPS访问我的微服务。这些微服务是使用.NETCore开发的,所以根据微软的文档,为了实施HTTPS,我需要配置Kestrel。下面是我是怎么做的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
.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功能也在发挥作用。