品尝阿里云容器服务:初步尝试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 发布首个企业级公共云容器平台报告. 报告显示:阿里云容器服务创造了中国企业最好成绩,与谷歌云位于同一水平线,进入强劲表现者象限. 究其原因,分析师认为: ...
随机推荐
- 迁移ORACLE_HOME引发的登录sqlplus无法加载类库错误
在10g以后,一般情况下环境变量中没有必要设置LD_LIBRARY_PATH,但是一旦将ORACLE_HOME迁移到其他目录,则环境变量中还需要添加这个变量. Linux和Unix支持TAR方式迁移O ...
- C#访问MySQL数据库的方法
C#访问MySQL数据库的方法 (1)首先需要下载C#访问MySQL数据库的ADO.NET驱动程序 下载地址为: http://dev.mysql.com/downloads/connector/ne ...
- OpenCV 学习笔记 07 目标检测与识别
目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV ...
- 高性能IO之Reactor模式(转载)
讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty.Redis在使用的IO模式,为什么需要这种模式,它是如何设计来解决高性能并发的呢? 最最原始的网络编程思路就是服务器用一个w ...
- logstash retrying failed action with response code: 429
https://blog.csdn.net/alan_liuyue/article/details/78926015 https://blog.csdn.net/ypc123ypc/article/d ...
- [Big Data - ZooKeeper] ZooKeeper: A Distributed Coordination Service for Distributed Applications
ZooKeeper ZooKeeper: A Distributed Coordination Service for Distributed Applications Design Goals Da ...
- java框架篇---hibernate之连接池
Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.在配置连接池时需要注意的有三点: 一.Apche的DBCP在Hibernate2中受支持,但在Hiber ...
- STM32F103VET6 ADC采集64点做FFT变换
http://www.stmcu.org/module/forum/thread-598459-1-11.html http://bbs.21ic.com/icview-589756-1-1.html ...
- 浏览器关闭、刷新、关闭标签事件,兼容IE8,chrome,firefox
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- ASP.NET IIS Registration Tool (Aspnet_regiis.exe)
IIS Version Special cases for 32-bit versions of Aspnet_regiis.exe 6.0 You can run the 32-bit versio ...