使用Visual Studio 2017构建.Net Core的Docker镜像

1 Docker  镜像优化

微软在为开发人员生成 Docker 镜像时,提供以下三种主要方案:

  • 用于开发 .NET Core 应用的 镜像
  • 用于构建生成 .NET Core 应用的 镜像
  • 用于运行 .NET Core 应用的 镜像

当开发、 构建和运行容器化应用程序时,我们具有不同的优先级别。

  • 的大小不为重要,而是你可以对代码进行更改并快速查看它们(sdk)。

  • 生成代理只需要了解如何运行此 Docker 映像即可。

  • 放置在此映像中的内容将限制为运行应用程序所需的二进制文件和内容。

    例如,dotnet publish输出包含:

    • 已编译的二进制文件
    • .js 和.css 文件

2 Docker 镜像类型

 microsoft/dotnet 镜像类型:

  • 使用microsoft/dotnet:sdk始终为你提供最新版本。
  • microsoft/dotnet:<version>-runtime: 此映像包含.NET 核心 (运行时和库),非常适合运行.NET Core 应用生产。

除了开发、生成和生产的优化方案外,我们还提供了其他映像:

  • 自包含的应用程序。

每个变体的最新版本:

  • microsoft/dotnetmicrosoft/dotnet:latest(别名 SDK 映像)
  • microsoft/dotnet:sdk
  • microsoft/dotnet:runtime
  • microsoft/dotnet:runtime-deps

3 构建基于ASP.NET Core 的Docker 应用

此 ASP.NET Core Docker 示例演示了针对适用于生产应用的 ASP.NET Core 构建 Docker 映像的最佳做法模式。

先决条件

若要生成并运行,请安装以下各项:

.NET 核心 2.0 SDK

  • .NET 核心 SDK 2.0。

  • Visual Studio 2017

获取示例应用程序

示例存储库使用 git,使用以下说明:

git clone https://github.com/dotnet/dotnet-docker-samples/

本地运行 ASP.NET 应用程序

在容器化应用程序之前,请先在本地运行应用程序。

你可以本地生成并运行应用程序使用.NET 核心 2.0 SDK 使用以下命令 (的说明假定存储库的根目录):

cd aspnetapp
dotnet run

http://localhost:5000/在 web 浏览器中。

生成并运行示例

你可以生成并运行在 Docker 使用 Linux 容器使用以下命令 (的说明假定存储库的根目录) 中的示例:

cd aspnetapp
docker build -t aspnetapp .
docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp

http://localhost:5000/在 web 浏览器中。

Dockerfile打包编译成果需要事先发布

您可以生成的应用程序已准备好部署到生产环境使用本地dotnet 发布命令。

dotnet publish -c release -o published

-C 版本自变量生成应用程序在发布模式下 (默认值为调试模式下)。 dotnet run 参考命令行参数。

你可以上运行应用程序Windows使用以下命令。

dotnet published/aspnetapp.dll

如果使用visual studio 2017,并且存在多个工程,则可以在release模式下,F6编译生成所有工程的镜像。

此示例中使用的 docker 映像

在此示例中使用以下的 Docker 映像

  • microsoft/aspnetcore-build:2.0,构建容器
  • microsoft/aspnetcore:2.0,生产环境