最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docker-compose.yml)容易让人产生挫败感,想到 Visual Studio 2017 对 Docker 的支持(Docker Support),也许借助它自动生成Docker配置文件、初步体验一下 Docker 部署是一个入门捷径,遂据此想法尝试了一下,感觉不错。

1. 启用 VS2017 的 Docker Support 有 2 种途径:

1.1 在创建 ASP.NET Core 项目时选中“Enable Docker Support”

1.2 或者在已有的项目(注:不是解决方案)中添加 Docker Support

2. 添加 Docker Support 之后,VS2017 会生产 4 个 Docker 配置文件和 1 个 .dcproj 文件。

2.1 Dockfile

FROM microsoft/aspnetcore:2.0ARG sourceWORKDIR /appEXPOSE 80COPY ${source:-obj/Docker/publish} .ENTRYPOINT ["dotnet", "aspnetcore2-20170530.dll"]

2.2 docker-compose.ci.build.yml

version: '3'services:ci-build:    image: microsoft/aspnetcore-build:1.0-1.1    volumes:- .:/src    working_dir: /src    command: /bin/bash -c "dotnet restore ./aspnetcore2-20170530.sln && dotnet publish ./aspnetcore2-20170530.sln -c Release -o ./obj/Docker/publish"

(注:由于这里时 ASP.NET Core 2.0 的项目,需要把上面的 microsoft/aspnetcore-build:1.0-1.1 改为 microsoft/aspnetcore-build:2.0)

2.3 docker-compose.yml

version: '3'services:aspnetcore2-20170530:    image: aspnetcore2-20170530    build:      context: ./aspnetcore2-20170530      dockerfile: Dockerfile

2.4 docker-compose.override.yml

version: '3'services:aspnetcore2-20170530:    environment:- ASPNETCORE_ENVIRONMENT=Development    ports:- "80"

(注:为了可以在容器外部访问站点,需要修改上面 ports 部分配置,这里将 "80" 改为 "8008:80" )

3. 在另外 1 台 Linux 服务器上用 Docker 分别创建 2 个容器发布(dotnet publish)与运行 ASP.NET Core 站点

3.1 在 Linux 机器上签出 ASP.NET Core 项目(已安装 Docker)

3.2 根据 docker-compose.ci.build.yml 配置文件基于 microsoft/aspnetcore-build:2.0 image 创建用于发布 ASP.NET Core 站点的容器

# docker-compose --file  docker-compose.ci.build.yml up
Pulling ci-build (microsoft/aspnetcore-build:2.0)...
2.0: Pulling from microsoft/aspnetcore-build
...
Status: Downloaded newer image for microsoft/aspnetcore-build:2.0
...
Starting src_ci-build_1 ...
Starting src_ci-build_1 ... done
Attaching to src_ci-build_1
...
src_ci-build_1 exited with code 0

3.3 根据 docker-compose.yml + docker-compose.override.yml 基于 microsoft/aspnetcore:2.0 image(来自Dockerfile的配置)创建用于运行 ASP.NET Core 站点的容器

# docker-compose up
Starting src_cnblogs.cache.webapi_1 ...
Starting src_cnblogs.cache.webapi_1 ... done
Attaching to src_cnblogs.cache.webapi_1
cnblogs.cache.webapi_1  | Hosting environment: Development
cnblogs.cache.webapi_1  | Content root path: /app
cnblogs.cache.webapi_1  | Now listening on: http://[::]:80
cnblogs.cache.webapi_1  | Application started. Press Ctrl+C to shut down.

这时通过这台 Linux 服务器的 8008 端口就可以访问运行在 Docker 容器中的 ASP.NET Core 站点。

这样简单快速地体验一下用 Docker 部署 ASP.NET Core 站点的确是一个不错的入门途径。

原文地址:http://www.cnblogs.com/dudu/p/6920764.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署相关推荐

  1. 在Docker中运行asp.net core 跨平台应用程序

    概述 Docker已经热了有一两年了,而且我相信这不是一个昙花一现的技术,而是一个将深远影响我们日后开发和部署.运营应用系统的一种创新(很多人将其作为devops的一种非常重要的基石).学习docke ...

  2. Docker ASP.NET Core (5):Docker Compose

    Docker & ASP.NET Core (5):Docker Compose 原文:Docker & ASP.NET Core (5):Docker Compose 第一篇:把代码 ...

  3. ASP.NET Core 网站在Docker中运行

    Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...

  4. Cenos7 部署asp.net core站点

    系统版本 rpm -q centos-release --- centos-release-7-5.1804.el7.centos.x86_64 安装libicu yum install libunw ...

  5. 用hosting.json配置ASP.NET Core站点的Hosting环境

    通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program {pu ...

  6. DataProtection设置问题引起不同ASP.NET Core站点无法共享用户验证Cookie

    这是这两天ASP.NET Core迁移中遇到的一个问题.2个ASP.NET Core站点(对应于2个不同的ASP.NET Core Web应用程序),2个站点都可以登录,但在其中任1个站点登录后,在当 ...

  7. 用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境

    通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program { p ...

  8. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMemc ...

  9. 通过 Docker Compose 组合 ASP NET Core 和 SQL Server

    本文模拟一个比较完整的项目,包括前端(MVC), 后端(WebApi)和数据库(mssql-server-linux).通过Docker Compose 定义,组合并执行它们.涉及到 Docker C ...

最新文章

  1. Java中Collection和Collections的区别
  2. 机器学习服务第一梯队都有谁?权威研究机构Forrester发布最新报告
  3. [zz]GMM-HMM语音识别模型 原理篇
  4. C#编程语言(七):值类型与引用类型
  5. 【Cinemachine智能相机教程】VirtualCamera(二):Body属性
  6. Android之哭笑不得的BUG--xml设置的padding不起作用,幕后黑手竟然是?
  7. typora代码块语言linux命令,typora工具的使用以及MarkDown语法
  8. GridView中BoundField重复绑定数据
  9. 【推荐】超级好用的打印插件Lodop使用笔记 动态赋值 打印模板解决方案
  10. eclipse调成黑色主题背景(老版本适用)
  11. 第一篇:阿里数据中台之数据中台顶层设计
  12. ANSI/ISO C++ Professional Programmer's Handbook(7)
  13. Python计算最大回撤、回撤天数
  14. 【rmzt:杀个浠巴烂win7主题】
  15. 周易六十四卦——乾卦
  16. Python进行表格拆分
  17. 【翻译】2020年云安全综合指南(风险,最佳实践,认证)
  18. 攻防世界Misc高手进阶区第一页WriteUp
  19. 算是入行 ISP 了吧
  20. 学生实验室常见升压降压芯片电路介绍

热门文章

  1. delphi中利用Indy的TIdFtp控件实现FTP协议
  2. 对抗告警疲劳的8种方法
  3. VS2010下的多线程窗口
  4. URLEncode编码和URLDecode解码
  5. 2013年7月27日杂记
  6. VI3的VLAN配置:VST、EST和VGT标记
  7. JS实现上下左右四方向无间隙滚动
  8. Xamarin效果第三篇之手机底部弹窗
  9. 腾讯,1000 亿!
  10. 架构 | 聊聊我心中的架构设计观