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"]
答案 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。