Docker noob在这里......
如何正确运行由Visual Studio 2017在命令行生成的Asp.Net CORE应用程序的docker镜像?
docker run -it -d -p 80:32769 myappimage
似乎没有正常工作(图像运行,但我无法浏览到我的应用程序)
注意:我只是使用默认模板在Studio中创建了一个示例ASP.Net Core Web App,并添加了Docker支持(通过单击“添加Docker支持”复选框) . 当您执行此操作时,Studio会添加dockerfile和一些docker-compose文件 .
当Visual Studio "runs"图像(通过按F5) - 我可以成功浏览到我的应用程序(通过“http://localhost:32789”或类似的主机端口 . 容器内的应用程序在端口80上) . 但我无法弄清楚在命令行自己运行它的命令 .
Studio添加到项目中的标准Dockerfile是......
FROM microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]
2 回答
对的,这是可能的 . 在 Release 配置中重建您的解决方案并尝试使用
F5
运行docker-compose
项目以确保图像已更新且您的应用程序正常运行 . 然后执行docker images
console command . 你会看到类似的东西:您只需从该映像运行一个新容器,并将其公开的端口映射到localhost端口 . 默认情况下,公开的端口是
80
(查看Dockerfile
) . 例如:然后您的应用应该可以在
http://127.0.0.1:1234/
访问 .说明:
如果设置了 Debug 配置,则Visual Studio将创建 empty 不可工作的图像 . 它手动将空容器映射到文件系统,以进行可能的调试,"Edit and Continue"功能等 . 这就是没有Visual Studio的情况下
dev
图像无用的原因 . 在 Release 配置中构建映像以使其可用 .完整的发布过程在文档中描述:Visual Studio Tools for Docker
你在这里有点困惑 . 在Visual Studio 2017中使用F5运行项目时,可以在随机配置的端口上使用IISExpress运行它 .
在Docker中你没有IISExpress,你的应用程序只由Kestrel托管(Kestrel总是在IIS / IISExpress后面使用,但它们充当反向代理) .
Kestrel的默认端口是5000,但您也可以配置它 . 有关配置侦听IP /端口的方法的更多详细信息,请参阅我的帖子here .