在本地 Docker 容器中调试应用

概述

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

Note

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

先决条件

需要安装以下工具。

若要在本地运行 Docker 容器,需要本地 docker 客户端。你可以使用发布的 Docker 工具箱(需要禁用 Hyper-V),也可以使用 Docker for Windows Beta 版(它使用 Hyper-V,并需要 Windows 10)。

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

1.创建 Web 应用并添加 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>

2.编辑代码并刷新

若要快速重复更改,可以在容器中启动应用程序,并继续进行更改,然后就像使用 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 wthin 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 中的微服务简介

演示