首页 文章

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

提问于
浏览
13

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 回答

  • 0

    对的,这是可能的 . 在 Release 配置中重建您的解决方案并尝试使用 F5 运行 docker-compose 项目以确保图像已更新且您的应用程序正常运行 . 然后执行 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/ 访问 .

    说明:

    如果设置了 Debug 配置,则Visual Studio将创建 empty 不可工作的图像 . 它手动将空容器映射到文件系统,以进行可能的调试,"Edit and Continue"功能等 . 这就是没有Visual Studio的情况下 dev 图像无用的原因 . 在 Release 配置中构建映像以使其可用 .

    完整的发布过程在文档中描述:Visual Studio Tools for Docker

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

  • 23

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

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

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

相关问题