基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
最近在学习如何用 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部署相关推荐
- 在Docker中运行asp.net core 跨平台应用程序
概述 Docker已经热了有一两年了,而且我相信这不是一个昙花一现的技术,而是一个将深远影响我们日后开发和部署.运营应用系统的一种创新(很多人将其作为devops的一种非常重要的基石).学习docke ...
- Docker ASP.NET Core (5):Docker Compose
Docker & ASP.NET Core (5):Docker Compose 原文:Docker & ASP.NET Core (5):Docker Compose 第一篇:把代码 ...
- ASP.NET Core 网站在Docker中运行
Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...
- Cenos7 部署asp.net core站点
系统版本 rpm -q centos-release --- centos-release-7-5.1804.el7.centos.x86_64 安装libicu yum install libunw ...
- 用hosting.json配置ASP.NET Core站点的Hosting环境
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program {pu ...
- DataProtection设置问题引起不同ASP.NET Core站点无法共享用户验证Cookie
这是这两天ASP.NET Core迁移中遇到的一个问题.2个ASP.NET Core站点(对应于2个不同的ASP.NET Core Web应用程序),2个站点都可以登录,但在其中任1个站点登录后,在当 ...
- 用quot;hosting.jsonquot;配置ASP.NET Core站点的Hosting环境
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program { p ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMemc ...
- 通过 Docker Compose 组合 ASP NET Core 和 SQL Server
本文模拟一个比较完整的项目,包括前端(MVC), 后端(WebApi)和数据库(mssql-server-linux).通过Docker Compose 定义,组合并执行它们.涉及到 Docker C ...
最新文章
- Java中Collection和Collections的区别
- 机器学习服务第一梯队都有谁?权威研究机构Forrester发布最新报告
- [zz]GMM-HMM语音识别模型 原理篇
- C#编程语言(七):值类型与引用类型
- 【Cinemachine智能相机教程】VirtualCamera(二):Body属性
- Android之哭笑不得的BUG--xml设置的padding不起作用,幕后黑手竟然是?
- typora代码块语言linux命令,typora工具的使用以及MarkDown语法
- GridView中BoundField重复绑定数据
- 【推荐】超级好用的打印插件Lodop使用笔记 动态赋值 打印模板解决方案
- eclipse调成黑色主题背景(老版本适用)
- 第一篇:阿里数据中台之数据中台顶层设计
- ANSI/ISO C++ Professional Programmer's Handbook(7)
- Python计算最大回撤、回撤天数
- 【rmzt:杀个浠巴烂win7主题】
- 周易六十四卦——乾卦
- Python进行表格拆分
- 【翻译】2020年云安全综合指南(风险,最佳实践,认证)
- 攻防世界Misc高手进阶区第一页WriteUp
- 算是入行 ISP 了吧
- 学生实验室常见升压降压芯片电路介绍