2017-04-30 46 views
9

泊坞小白这里生产的码头工人形象...如何运行由2017年VS

怎样才能正常运行这是由Visual Studio 2017年在命令行中所产生的Asp.Net核心应用的码头工人形象?

docker run -it -d -p 80:32769 myappimage 

似乎并没有正常工作(图像运行,但我无法浏览到我的应用程序)

注:我简单地使用默认的模板创建在Studio样本ASP.Net核心Web应用程序并添加了Docker支持(通过单击“添加Docker支持”复选框)。当你这样做时,Studio会添加一个dockerfile和一些docker-compose文件。我可以成功浏览我的应用程序(通过“http://localhost:32789”或类似的主机端口,容器内的应用程序在端口80上)。当Visual Studio“运行”图像时(通过按F5)。但我无法弄清楚自己在命令行运行它的命令。

标准Dockerfile该工作室添加到您的项目是...

FROM microsoft/aspnetcore:1.1 
ARG source 
WORKDIR /app 
EXPOSE 80 
COPY ${source:-obj/Docker/publish} . 
ENTRYPOINT ["dotnet", "WebApplication2.dll"] 
+0

可能需要给我们一些更多的信息。 Dockerfile,它试图做什么,什么'不能浏览到应用程序'的意思,等等...... – johnharris85

+0

什么是你的码头主机? – user268396

+0

您的应用程序是否配置为在端口80上运行?当您使用ASP.NET核心模板时,默认端口是5000 – Tseng

回答

12

是的,这是可能的。在版本配置中重建您的解决方案,并尝试使用F5运行docker-compose项目,以确保图像更新且您的应用工作正常。然后执行docker imagesconsole command。你会看到类似这样的:

REPOSITORY TAG  IMAGE ID  CREATED    SIZE 
Your.App  latest 673b79a6bb3d About a minute ago 294 MB 

所有你需要的是从图像运行一个新的容器和其暴露的端口映射到本地主机端口。默认情况下,暴露的端口是80(查看Dockerfile)。例如:

docker run -d -p 1234:80 --name some_name Your.App:latest 

那么您的应用程序应该在http://127.0.0.1:1234/成为访问。

说明:

如果调试配置被设置,那么非可行图像通过Visual Studio创建的。它手动将空容器映射到文件系统以进行调试,“编辑并继续”功能等。这就是为什么dev图像没有Visual Studio没用。在版本配置中构建映像以使其可用。

完整的出版过程中的文档中描述:Visual Studio Tools for Docker

出版泊坞窗图像

一旦您完成您的 应用程序的开发和调试周期,Visual Studio工具泊坞窗将帮助您创建应用程序的生产映像的 。将调试下拉列表更改为 版本并构建应用程序。该工具将生成带有:latest标记的图像 ,您可以将它推送到您的私人注册表或 Docker Hub。

+2

非常感谢我在天内寻找这个答案 – Eskinder

1

您在这里混淆的东西。当您在Visual Studio 2017中使用F5运行项目时,可以在随机配置的端口上使用IISExpress运行它。

在Docker中,您没有IISExpress,您的应用程序只由Kestrel托管(Kestrel始终在IIS/IISExpress后面使用,但它们充当反向代理)。

Kestrel的默认端口为5000,但您也可以对其进行配置。请参阅我的文章here以获取有关您必须配置侦听IP /端口的方法的更多详细信息。