如何运行VS 2017生成的docker图像

时间:2017-04-30 16:21:19

标签: docker asp.net-core visual-studio-2017

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“运行”图像时(通过按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 个答案:

答案 0 :(得分:24)

是的,有可能。在发布配置中重建您的解决方案,并尝试使用docker-compose运行F5项目,以确保图片更新并且您的应用正常运行。然后执行docker images console command。你会看到类似的东西:

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

您只需要从该映像运行一个新容器,并将其公开的端口映射到localhost端口。默认情况下,公开的端口为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

  

发布Docker镜像

     

完成您的开发和调试周期后   应用程序,Docker的Visual Studio工具将帮助您创建   您的应用程序的生产图像。将调试下拉列表更改为   发布并构建应用程序。工具将生成图像   使用:latest标记,您可以将其推送到您的私人注册表或   Docker Hub。

答案 1 :(得分:-1)

你在这里有点困惑。在Visual Studio 2017中使用F5运行项目时,可以在随机配置的端口上使用IISExpress运行它。

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

Kestrel的默认端口是5000,但您也可以配置它。有关配置侦听IP /端口的方法的详细信息,请参阅我的帖子here