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

时间:2018-05-16 19:40:43

标签: c# asp.net .net docker dockerfile

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

当我最初尝试右键单击时 - >添加 - > Docker对Visual Studio 2017 sln项目的支持我得到一个提示“你不能为这个项目类型添加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,这些端口也在我的localhost防火墙)

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

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

docker inspect <containerId>

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

我的服务在Windows VM上运行正常。 由于我的GET调用似乎甚至没有到达容器,我担心我正在进行端口映射错误/或者它是否是别的?

1 个答案:

答案 0 :(得分:0)

据我所知,您不需要容器的ip,端口已投影在localhost上,当您对localhost:5000 / localhost:13134进行REST调用时,应该会得到响应。