在本地 Docker 容器中调试应用

概述

Visual Studio Tools for Docker 提供了在本地 Linux Docker 容器中开发和验证应用程序的一致性方法。 每次进行代码更改后,不需要重新启动该容器。 本文将演示如何使用“编辑和刷新”功能在本地 Docker 容器中启动 ASP.NET Core Web 应用,进行任何必要的更改,并刷新浏览器查看这些更改。 本文还将说明如何为调试设置断点。

Note

Windows 容器支持会在将来的版本中推出。

先决条件

必须安装以下工具。

若要在本地运行 Docker 容器,需要本地 docker 客户端。 可使用 Docker 工具箱(需禁用 Hyper-V),也可使用 Docker for Windows(其使用 Hyper-V 并需要 Windows 10)。

如果使用 Docker 工具箱,则需要配置 Docker 客户端

1.创建 Web 应用

  1. 在 Visual Studio 菜单中,选择“文件”>“新建”>“项目”。
  2. 在“新建项目”对话框的“模板”部分下,选择 “Visual C#”>“Web”。
  3. 选择 “ASP.NET Core Web 应用程序(.NET Core)”。
  4. 为新应用程序指定名称(或使用默认值),并选择“确定”。
  5. 在 “ASP.NET Core 1.1 模板”下,选择“Web 应用程序”,并选择“确定”。

2.添加 Docker 支持

  1. 在 Visual Studio 的“解决方案资源管理器”中右键单击项目,然后从上下文菜单中选择“添加”>“Docker 支持”。

    “添加 Docker 支持”上下文菜单

  2. 将 Docker 支持添加到 ASP.NET Core Web 项目会导致将多个 Docker 相关文件添加到该项目,其中包括 Docker-Compose 文件、Windows PowerShell 部署脚本和 Docker 属性文件。

    添加到项目的 Docker 文件

Note

如果使用 Docker for Windows Beta 版,请打开 Properties\Docker.props,删除默认值并重新启动 Visaul Studio 使值生效。

<DockerMachineName Condition="'$(DockerMachineName)'=='' "></DockerMachineName>

3.编辑代码并刷新

要快速重复更改,可以在容器中启动应用程序,并继续进行更改,然后就像使用 IIS Express 一样查看这些更改。

  1. 将解决方案配置设置为 Debug,并按 <CTRL + F5> 以生成 docker 映像并在本地运行它。

    容器映像已生成并在 Docker 容器中运行后,Visual Studio 会在默认浏览器中启动 Web 应用。 如果使用的是 Microsoft Edge 浏览器或以其他方式出现错误,请参阅 故障排除 部分。

  2. 请转到“关于”页,我们会在此页中进行更改。
  3. 返回到 Visual Studio 并打开 Views\Home\About.cshtml
  4. 将以下 HTML 内容添加到文件末尾,并保存更改。

    <h1>Hello from a Docker Container!</h1>
    
  5. 查看输出窗口,当 .NET 生成完成并且你看到这些行时,切换回浏览器并刷新“关于”页。

    Now listening on: http://*:80
    Application started. Press Ctrl+C to shut down
    
  6. 更改已应用!

4.使用断点进行调试

通常,更改需要利用 Visual Studio 的调试功能进行进一步检查。

  1. 返回到 Visual Studio 并打开 Controllers\HomeController.cs
  2. 将 About() 方法的内容替换为以下代码:

    string message = "Your application description page from within a Container";
    ViewData["Message"] = message;
    
  3. string message.行的左侧设置一个断点。
  4. <F5> 开始调试。
  5. 导航到“关于”页以命中断点。
  6. 切换到 Visual Studio 以查看断点,并检查消息的值。

摘要

使用 Visual Studio 2015 Tools for Docker,可以通过在 Docker 容器内开发的生产真实性,获得在本地工作的生产效率。

故障排除

Visual Studio Docker 开发故障排除

提供有关在 Visual Studio、Windows 和 Azure 中使用 Docker 的更多信息

各种 Docker 工具

一些好用的 docker 工具(Steve Lasker 的博客)

优秀文章

NGINX 中的微服务简介

演示