添加 Docker 支持

通过在“解决方案资源管理器”中选择“添加” > “Docker 支持”来向现有项目添加 Docker 支持。

当添加或启用 Docker 支持时,Visual Studio 会向项目添加以下各项:

  • Dockerfile** 文件
  • .dockerignore 文件
  • 对 Microsoft.VisualStudio.Azure.Containers.Tools.Targets 的 NuGet 包引用

 

查看容器

菜单路径“查看” > “其他 Windows” > “容器” 

“环境”选项卡显示容器中的环境变量 。 对于应用的容器,可以通过多种方式设置这些变量,例如,在 Dockerfile 中,在 .env 文件中,或使用 Docker 命令启动容器时使用 -e 选项进行设置。

visual studio docker visual studio docker文件_环境变量

 备注

对环境变量所做的任何更改都不会实时反映出来。 此外,此选项卡中的环境变量是容器上的系统环境变量,不反映应用程序的本地用户环境变量。

 

在本地 Docker 容器中调试应用

在 3.0 及以上版本的 .NET Core 中的默认模板不支持编辑代码和刷新运行的站点。 为了启用此功能,请添加 NuGet 包 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 在 Startup.cs 中,在 ConfigureServices 方法的代码中添加对扩展方法 IMvcBuilder.AddRazorRuntimeCompilation 的调用。 由于你只需在调试模式中启用编辑代码和刷新功能,因此请按如下所示的方法进行编码:

public Startup(IConfiguration configuration, IWebHostEnvironment webHostEnvironment)
{
    Configuration = configuration;
    Env = webHostEnvironment;
}
public IWebHostEnvironment Env { get; set; }

public void ConfigureServices(IServiceCollection services)
{
    IMvcBuilder builder = services.AddRazorPages();

#if DEBUG
    if (Env.IsDevelopment())
    {
        builder.AddRazorRuntimeCompilation();
    }
#endif

    // code omitted for brevity
}

容器重复使用

在开发周期中,Visual Studio 在你更改 Dockerfile 后仅重新生成容器映像和容器本身。 如果不更改 Dockerfile,Visual Studio 将重复使用以前运行的容器。

如果你手动修改了容器,并希望使用干净的容器映像重启,请使用 Visual Studio 中的“Build” > “Clean”命令,然后按常规操作生成 。

 

多阶段生成

https://docs.microsoft.com/zh-cn/visualstudio/containers/container-build?view=vs-2019#multistage-build

 

Docker Compose 支持

当你想要使用 Docker Compose 撰写多容器解决方案时,请向项目添加容器业务流程支持。 这样就可以同时运行和调试一组容器(整个解决方案或项目组)(如果已在同一个 docker-compose.yml** 文件中定义这些容器)。

若要使用 Docker Compose 添加容器业务流程支持,请右键单击“解决方案资源管理器”**** 中的解决方案或项目节点,然后选择“添加”>“容器业务流程支持”****。 然后,选择“Docker Compose”**** 以管理容器。

向项目添加容器业务流程支持后,会看到添加到项目的 Dockerfile**(如果尚无)以及添加到“解决方案资源管理器”**** 中的某个解决方案的 docker-compose**** 文件夹,如下所示:

visual studio docker visual studio docker文件_Docker_02

 

使用 Docker Compose 创建多容器应用

https://docs.microsoft.com/zh-cn/visualstudio/containers/tutorial-multicontainer?view=vs-2019