我正在尝试将服务载入 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/