品尝阿里云容器服务:初步尝试ASP.NET Core Web API站点的Docker自动化部署
部署场景是这样的,我们基于 ASP.NET Core 2.0 Preview 1 开发了一个用于管理缓存的 Web API ,想通过阿里云容器服务基于 Docker 部署为内网服务。
在这篇博文中分享一下经过实践验证的操作步骤:
一、创建与配置集群
1)首先创建一个 Swarm Mode 的集群(注意创建时不要选择“自动创建负载均衡”,因为我们部署的是内网服务,自动创建的是公网负载均衡,需要手动创建内网负载均衡并绑定到集群):

2)集群创建成功后,会在集群列表中显示下面的信息:

3)接着创建一个内网负载均衡,并将它绑定到刚刚创建的集群。
绑定方法:在集群列表中对应的集群右侧点击“管理”->“负载均衡”,在“负载均衡”中点击“绑定SLB”进行绑定。

4)绑定好之后,为了可以通过自己的域名访问运行在 Docker 容器中的站点,需要进行“域名设置”:

(注:这里只需设置一级域名,设置之后一定要重新部署acsrouting系统应用,详见用nginx镜像创建容器,体验基于域名的路由机制)
二、创建自己的镜像仓库
1)进入“Docker镜像仓库”管理控制台,创建镜像仓库配置,这里配置为让阿里云容器服务自动从 GitLab 签出 cache-service 项目的代码并基于其中的 Dockerfile 构建镜像。

2)点击镜像仓库的“管理”,进入“构建”,点击“立即构建”,我们这里手动触发镜像的构建。

3)cache-service 项目使用的 Dockerfile 如下,使用的是微软官方提供的专门用于构建 asp.net core 2.0 项目的 Docker 镜像。
FROM microsoft/aspnetcore-build:2.0
WORKDIR /app
COPY src .
RUN dotnet restore CnblogsCache.sln && cd Cnblogs.Cache.WebApi && dotnet publish -c Release -o ./publish
(注:我们在构建与运行 cache-service 项目时分别用的是不同的微软官方 Docker 镜像 aspnetcore-build:2.0 与 aspnetcore:2.0 )
4)镜像仓库创建好之后,在容器服务控制台的“镜像与方案”->“镜像”->“用户镜像”中会看到。
三、创建编排
进入“镜像与方案”->“编排模板”,点击“创建”进入创建编辑页面,编写如下的编排:
version: '3'
services:
cache-service:
image: microsoft/aspnetcore:2.0
depends_on:
- dotnet-publish
volumes:
- share:/app
command: bash -c "cd /app && dotnet Cnblogs.Cache.WebApi.dll"
labels:
aliyun.routing.port_80: cache
dotnet-publish:
image: cnblogs/cache-service:latest
volumes:
- share:/app
command: bash -c "rm -rf /app/* && cd /src/Cnblogs.Cache.WebApi/publish && cp -r * /app && dotnet Cnblogs.Cache.WebApi.dll"
volumes:
share:
注:运行 web api 站点时,我们用的微软官方 Docker 镜像是 microsoft/aspnetcore:2.0 ,而 build 时用的是 microsoft/aspnetcore-build:2.0 ,这是两个分别针对运行时与构建时进行优化过的镜像。
编写编排中遇到的问题详见:
- 品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制
- 如何编写docker-compose配置文件实现从一个容器向另一个容器复制文件夹
- 使用阿里云容器服务部署自己的Docker镜像遇到的问题
四、创建应用
1)以前一步中创建的“编排”创建应用

2)等一段时间,如果没有遇到问题,应用就会部署成功



3)检查所绑定的负载均衡的运行状态是否是“运行中”
有时在部署或重新部署应用的过程中,负载均衡会处于“已停止”的状态,如果出现这个问题,重新绑定一下负载均衡即可。
五、访问通过阿里云容器服务成功部署在 Docker 容器中的 Web API 站点
1)在一台用于测试的阿里云服务器的 hosts 文件中添加 cache.cnblogs.com 的内网解析,解析到集群所绑定的负载均衡的内网 IP。
2)用 curl 命令测试一下访问 cache service web api:
$ curl -X 'DELETE' --head -s http://cache.cnblogs.com/cache/test
测试结果:

大功告成!使用阿里云容器服务进行生产环境的自动化部署即将梦想成真!
品尝阿里云容器服务:初步尝试ASP.NET Core Web API站点的Docker自动化部署的更多相关文章
- 品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制
在前一篇博文中我们了解了阿里云容器服务的路由机制: 请求 -> 负载均衡80端口 -> 容器主机9080端口 -> acsrouting路由容器80端口 --基于域名--> W ...
- 品尝阿里云容器服务:5个2核4G节点使用情况记载
使用5台2核4G非IO优化的ECS作为节点创建集群,节点操作系统是Ubuntu 16.04.2 LTS.创建后3个为mananger节点,2个为worker节点,每个节点默认会运行7个容器,其中3个s ...
- 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序
小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...
- 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json
这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...
- Knative 应用在阿里云容器服务上的最佳实践
作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...
- 阿里云容器服务--配置自定义路由服务应对DDOS攻击
阿里云容器服务--配置自定义路由服务应对DDOS攻击 摘要: 容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDO ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用
本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...
- 阿里云容器服务中国最佳,进入 Forrester 报告强劲表现者象限
近日,全球知名市场调研机构 Forrester 发布首个企业级公共云容器平台报告. 报告显示:阿里云容器服务创造了中国企业最好成绩,与谷歌云位于同一水平线,进入强劲表现者象限. 究其原因,分析师认为: ...
随机推荐
- 修改QGIS来支持DPI为96的WMTS/WMS服务
缘由 因为各种各种wmts地图客户端产品的标准的支持不一定是一致的,就像ArcGIS不同版本加载WMTS图层的时候计算的规则就有差别(米和经纬度之间转换系数的区别),导致会出现适应各个客户端而出的WM ...
- apacheh2.4和php5.5集成环境遇到的问题
装了wampserver64位,里面的php是5.5,apache是2.4 1.配置虚拟主机时碰到问题:apache AH01630: client denied by server configur ...
- asp.net C# int 类型在32/64位环境下取值范围无变化
最近在学习中突然想到,我在64位环境下,int取值范围是否有变化?为了检测这个结果,我做了以下这个测试:1.环境:win7旗舰版64位+vs2010 sp1(版本号:10.0.40219.1SP1Re ...
- CentOS 7 安装配置zabbix 3.2.8
运行环境:CentOS 7.2 LNMP(已提前安装好此环境) 1.首先导入zabbix安装源# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x ...
- Atitit easyui翻页组件与vue的集成解决方案attilax总结
Atitit easyui翻页组件与vue的集成解决方案attilax总结 ===============使用1 ===========\paggingUtil_easyui_vue.js2 C:\U ...
- 每日英语:These Gadgets Aim To Put Some Teeth Into The Internet Of Things
What the world needs now is a Web-enabled toothbrush. That part is clear to several oral-hygiene com ...
- ②NuPlayer播放框架之ALooper-AHandler-AMessage底层机制分析
[时间:2016-09] [状态:Open] [关键词:android,NuPlayer,开源播放器,播放框架,ALooper,AHandler,AMessage] 前文中提到过NuPlayer基于S ...
- Emacs常用基本操作
按键约定 组合按键 Emacs中大量的按键操作都是各式各样的组合按键(快捷键),下面是几种通常的约定: Ctrl键:表示为C Alt键:表示为M Shift键:表示为S 组合按键:比如向下移动一行的组 ...
- 项目中遇到的IE8浏览器访问页面过慢问题
我目前所做的项目,由于一些控件的特殊需求,建议客户使用IE8浏览器,在测试一段时间之后,客户突然提出,IE8访问我们的系统时,界面加载非常缓慢.排查过服务器性能.网络连接等情况之后,在360浏览器访问 ...
- Docker孵化的5个开源项目
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/81977243 回想过去短短 ...