使用Visual Studio 2017构建.Net Core的Docker镜像
1 Docker 镜像优化
微软在为开发人员生成 Docker 镜像时,提供以下三种主要方案:
- 用于开发 .NET Core 应用的 镜像
- 用于构建生成 .NET Core 应用的 镜像
- 用于运行 .NET Core 应用的 镜像
当开发、 构建和运行容器化应用程序时,我们具有不同的优先级别。
开发:优先级主要是为了快速循环更改和调试所做的更改的能力,镜像的大小不为重要,而是你可以对代码进行更改并快速查看它们(sdk)。
生成中:此镜像包含将应用程序,其中包括编译器和任何其他依赖项以优化的二进制文件编译所需的一切(build)。 生成镜像用于创建你将放入生产镜像的资产。 将用于构建镜像,持续集成,或在生成环境中。 此方法允许用于编译和生成中生成映像实例应用程序 (具有所有必需的依赖项) 的生成代理。 生成代理只需要了解如何运行此 Docker 映像即可。
生产:速度可以部署和启动你的映像, 此映像很小,因此从 Docker 注册表到 Docker 主机的网络性能进行了优化。 已准备运行内容,以此实现从 Docker 运行到处理结果的最快时间。 Docker 模型中不需要动态代码编译。 放置在此映像中的内容将限制为运行应用程序所需的二进制文件和内容。
例如,
dotnet publish输出包含:- 已编译的二进制文件
- .js 和.css 文件
2 Docker 镜像类型
若要实现上述目标,我们提供microsoft/dotnet镜像类型:
microsoft/dotnet:<version>-sdk(microsoft/dotnet:2.0.0-sdk) 此映像包含.NET 核心 SDK,其中包含.NET 核心和命令行工具 (CLI)。 此映像将映射到开发方案。 此映像用于本地开发、 调试和单元测试。 此映像还可用于生成方案。 使用microsoft/dotnet:sdk始终为你提供最新版本。
microsoft/dotnet:<version>-runtime: 此映像包含.NET 核心 (运行时和库),非常适合运行.NET Core 应用生产。
除了开发、生成和生产的优化方案外,我们还提供了其他映像:
microsoft/dotnet:<version>-runtime-deps:运行时 deps映像包含操作系统所有所需的.NET 核心的本机依赖项。 此映像适用自包含的应用程序。
每个变体的最新版本:
microsoft/dotnet或microsoft/dotnet:latest(别名 SDK 映像)microsoft/dotnet:sdkmicrosoft/dotnet:runtimemicrosoft/dotnet:runtime-deps
3 构建基于ASP.NET Core 的Docker 应用
此 ASP.NET Core Docker 示例演示了针对适用于生产应用的 ASP.NET Core 构建 Docker 映像的最佳做法模式。
先决条件
若要生成并运行,请安装以下各项:
.NET 核心 2.0 SDK
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 容器生成并运行示例
你可以生成并运行在 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,生产环境
使用Visual Studio 2017构建.Net Core的Docker镜像的更多相关文章
- visual studio 2017发布dotnet core到docker
docker的好处不用多说,有不了解的可移步<docker入门>,作为一个.net方面的老鸟也想早点搭上docker末班车,减少布署中的各种坑.以下我是在Visual Studio 201 ...
- Visual Studio 2017 ASP.NET Core开发
Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行 ...
- Visual Studio 2017 调试 windows server 2016 Docker Container
网上很多文章都是在win10下,用Docker for windows工具进行Docker的安装部署的.用知道windows server 2016已经原生支持Docker了,其windows Con ...
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- 微软推出ASP.NET Core 2.0,并支持更新Visual Studio 2017
微软推出ASP.NET Core 2.0的一般可用性,并发布.NET Core 2.0.该公司还推出了其旗舰集成开发环境(IDE)的更新:Visual Studio 2017版本15.3和Visual ...
- Visual Studio 2017 通过SSH 调试Linux 上.NET Core
Visual Studio 2017 通过SSH 调试Linux 上.NET Core 应用程序. 本文环境 开发环境:Win10 x64 Visual Studio 2017 部署环境:Ubuntu ...
- Visual Studio 2017 15.7 下的.NET Core
Visual Studio 2017 15.7版本发布,对.NET Core项目的主要相关改变如下, 同时对Xamarin.Android和iOS项目的支持上也做了较大改进. 一. .NET Core ...
随机推荐
- 【[NOI2009]植物大战僵尸】
题目 我太\(zz\)了 有一个非常显然的问题就是一个植物显然能保护同一行上比它更靠后的植物,因为显然得先干掉更靠前的植物 首先可以看出来这是一个经典的最大权闭合子图的模型,于是去套最小割 发现植物的 ...
- 【转】android Looper 理解
在主线程中运行的部分,都可以直接使用Handler,因为在主线程启动的过程中(ActivityThread的main函数里)会调用Looper.prepareMainLooper(),Looper类中 ...
- POJ 3764 The xor-longest Path 【01字典树&&求路径最大异或和&&YY】
题目传送门:http://poj.org/problem?id=3764 The xor-longest Path Time Limit: 2000MS Memory Limit: 65536K ...
- 查看flash的版本
查看当前浏览器的flash版本: http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf 针对谷歌浏览器 chr ...
- HTML中什么时候加px
如:<img width="800" height="600" src="#"/> 不加后面的px; #center{ ...
- python序列化_json,pickle,shelve模块
序列化 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 把内存数据 转成字符,叫序列化 把字符 转成内存数据,叫反序列化 模块 ...
- Feign Form表单POST提交
Form表单的POST提交,调用该类接口最长用的方式就是HttpClient,如果使用Feign,如何实现呢? 首先,看下Http中已Form的形式做Post提交的定义: -------------- ...
- T4模板之文本模板
网址:https://docs.microsoft.com/en-us/visualstudio/modeling/design-time-code-generation-by-using-t4-te ...
- triplet loss
因为待遇低,因为工作不开心,已经严重影响了自己的工作积极性和工作效率,这几天发觉这样对自己实在是一种损失,决定提高工作效率,减少工作时间. 说说最近做的tracking, multi-object t ...
- c语言描述的顺序栈实现
#include<stdio.h> #include<stdlib.h> #define initsize 100 #define ok 1 #define error 0 t ...