部署场景是这样的,我们基于 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 ,这是两个分别针对运行时与构建时进行优化过的镜像。

编写编排中遇到的问题详见:

四、创建应用

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自动化部署的更多相关文章

  1. 品尝阿里云容器服务:用nginx镜像创建容器,体验基于域名的路由机制

    在前一篇博文中我们了解了阿里云容器服务的路由机制: 请求 -> 负载均衡80端口 -> 容器主机9080端口 -> acsrouting路由容器80端口 --基于域名--> W ...

  2. 品尝阿里云容器服务:5个2核4G节点使用情况记载

    使用5台2核4G非IO优化的ECS作为节点创建集群,节点操作系统是Ubuntu 16.04.2 LTS.创建后3个为mananger节点,2个为worker节点,每个节点默认会运行7个容器,其中3个s ...

  3. 基于阿里云容器服务用docker容器运行ASP.NET 5示例程序

    小试阿里云容器服务 之后,接下来有一个挡不住的小试冲动--用docker容器运行程序.首先想到的程序是 ASP.NET 5示例程序,于是参考msdn博客中的这篇博文 Running ASP.NET 5 ...

  4. 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json

    这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...

  5. Knative 应用在阿里云容器服务上的最佳实践

    作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...

  6. 阿里云容器服务--配置自定义路由服务应对DDOS攻击

    阿里云容器服务--配置自定义路由服务应对DDOS攻击 摘要: 容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDO ...

  7. 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1

    摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...

  8. 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

    本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...

  9. 阿里云容器服务中国最佳,进入 Forrester 报告强劲表现者象限

    近日,全球知名市场调研机构 Forrester 发布首个企业级公共云容器平台报告. 报告显示:阿里云容器服务创造了中国企业最好成绩,与谷歌云位于同一水平线,进入强劲表现者象限. 究其原因,分析师认为: ...

随机推荐

  1. Database数据库切片模式

    数据库切片模式关注的实现水平伸缩.切分是从单个数据库到平分数据访问两个或更多数据库切片.每个切片有和原始数据库相同的Schema.大多数据分布在每个切片每一行.从切片合并起来的数据和原始数据库一样.切 ...

  2. Git 安装(分布式版本控制系统)

    1.在 Windows 上安装 在 Windows 上安装 Git 也有几种安装方法. 官方版本可以在 Git 官方网站下载,打开下载会自动开始.要注意这是一个名为 Git for Windows 的 ...

  3. 小白学python时候总会遇到的几个问题

    最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...

  4. 9.5 翻译系列:数据注解之ForeignKey特性【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code ...

  5. SNF快速开发平台3.0之--系统里广播的作用--迅速及时、简明扼要的把信息发送给接收者

    广播信息,即速度快捷.迅速及时.简明扼要的把信息发送给接收者. 当然在SNF快速开发平台上你也可以作为公告使用.不管当做什么使用要满足以下需求: 简单操作:页面操作简单 只需要输入内容就可以发送. 灵 ...

  6. 关于NSString的@""和nil时的判断方法

    1.NSString *str = @"";该语句代表是一个空串,并且不为nil,占有内存空间 2.NSString *str = nil;该语句代表,str不指向任何对象,指针指 ...

  7. epoll的由来

    reference https://www.zhihu.com/question/20122137 感谢 @静海听风 @蓝形参 数据流有两个重要的参与者: 1.往流中写入数据者 2.从流中读取数据者 ...

  8. Selenium Web 自动化 - Selenium(Java)环境搭建

    Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/j ...

  9. Linux 下mysql的定时备份

    在实际项目中,数据库是要经常备份的,就是为了防止突发情况,前段时间,我的数据库就遭遇了入侵要支付B特比的,结果数据全没了,哎,还好当时只是个测试库,不过有了这次危机,也就开始意识到了这个问题了. 先写 ...

  10. 【emWin】例程十九:窗口对象——Checkbox

    简介: 复选框是选择各种不同选项的最常用小工具之一.用户可选中或取消选中复选框,并且可一次选中任意个框 触摸校准(上电可选择是否进入校准界面) CHECKBOX三状态模式 CHECKBOX设置字体颜色 ...