c# - 在 Docker 上运行 .NET framework console-app 服务

标签 c# asp.net .net docker dockerfile

我正在尝试将服务载入 Docker 容器。 目标框架 - .NET Framework 4.6.1 输出类型-控制台应用

当我最初尝试在 Visual Studio 2017 sln 中的项目上右键单击 -> 添加 -> Docker 支持时,我收到提示“您无法将 Docker 支持添加到此项目类型”

我继续手动创建了一个 Dockerfile 并将其放在根目录中。这是它的样子:

FROM microsoft/windowsservercore

SHELL ["powershell", "-command"]

RUN Add-WindowsFeature NET-Framework-45-ASPNET, Web-Asp-Net45

EXPOSE 80
EXPOSE 5000
EXPOSE 13134

ADD ./bin/Debug/net461/win7-x64 .
COPY ./bin/cert-that-needs-to-be-installed.pfx /cert-that-needs-to-be-installed.pfx

RUN $Secure_String_Pwd = ConvertTo-SecureString "thePasswordToTheCert!" -AsPlainText -Force; \
    Import-PfxCertificate -FilePath .\cert-that-needs-to-be-installed.pfx  -CertStoreLocation Cert:\LocalMachine\My -Exportable -Password $Secure_String_Pwd;

ENV ASPNETCORE_ENVIRONMENT="Development"
ENTRYPOINT ["./ServiceName.exe"]

在执行以下操作后,我能够成功地创建一个镜像以及一个在其上运行服务的容器:(prod 版本监听端口 5000,而测试版本监听 13134,这些端口也在我的本地主机防火墙)

docker build -t ServiceName .; docker run -p 5000:5000 -p 13134:13134 -it ServiceName

我可以通过这样做来获取容器的 ip:

docker inspect <containerId>

现在,当我尝试通过使用 Postman 对 API 执行 HttpGet 调用来测试服务时,我没有收到响应。我在 cmd 提示符下打开了 docker 容器,但我也没有看到我的请求。

我的服务在 Windows 虚拟机上运行良好。 由于我的 GET 调用似乎甚至没有到达容器,我担心我做错了端口映射/或者是其他原因?

最佳答案

据我所知,您不需要容器的 ip,端口已转换到您的本地主机上,当您对 localhost:5000/localhost:13134 进行 REST 调用时,您应该会得到响应

关于c# - 在 Docker 上运行 .NET framework console-app 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50378766/

相关文章:

c# - Windows Azure 上的 Crystal 报表未显示

c# - 从方法体内获取表达式树

c# - 为某些 caSTLe 组件的运行时设置而苦苦挣扎

c# - ASP.NET Core 中的自定义授权属性

c# - 在 Amazon RDS 中托管的 SQL Server 中自动创建数据库

c# - 将所有枚举保存在一个地方是个好主意吗?

asp.net - 推荐的 ASP.NET 网格和 UI 工具

asp.net - 当前不会命中断点。尚未为该文档加载任何符号

c# - 无法从 Windows 服务连接到 WCF 服务

c# - 在@using 语句中使用三元