无法连接到docker容器中的服务

问题描述 投票:0回答:1

我创建了一个基于 .NET 5 的服务。这项服务在本地运行良好。我正在尝试将其放入 docker 容器中。但是我无法连接到它。该服务正在使用为 8080 配置的 Kestrel 运行

我的 Dockerfile 相当简单

FROM mcr.microsoft.com/dotnet/aspnet:5.0 #msft image

COPY ./bin/debug/net5.0/ .        #local items

EXPOSE 8080
ENTRYPOINT [dotnet, myservice.dll]

用于运行服务的命令

docker run -it -p 8080:8080 myservice

我创建了一个图像,当我使用

-it
标志运行上面的图像时,我可以看到服务已执行。在检查/导出容器时,我还可以看到生成的一些应用程序日志文件,表明服务正在成功运行。当我通过在容器内执行curl来运行swagger端点时,我确实得到了swagger UI HTML页面。

但是,当我从实际机器上运行它时,它似乎没有连接到任何端点。我已使用

-p 8080:8080
运行图像,因此它应该在同一端口上响应。我尝试过使用随机本地端口映射,所以端口肯定不会被阻止。

我还检查了在端口 8080 上运行另一个基于容器的服务,但我能够访问相同的服务,所以端口肯定没有被阻止。

不知道我在这里错过了什么。设置非常简单,因为它只是一个虚拟服务,用于使用一个 swagger 端点和 .NET 模板附带的另一个天气预报端点进行测试。

docker .net-5 asp.net-core-5.0
1个回答
0
投票

默认情况下,容器将在端口 80 上进行内部侦听,除非您使用

ASPNETCORE_URLS
环境变量覆盖了该端口。 Docker 文件中的
EXPOSE
不执行任何操作,只是记录要使用的端口。

尝试使用

-p 8080:80
运行它,这会将本地计算机上的端口 8080 映射到容器中的端口 80。

© www.soinside.com 2019 - 2024. All rights reserved.