巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
建站专提News

详解给Ocelot做一个Docker镜像

一佰互联网站开辟设想(www.taishanly.com) 宣布日期 2020-04-23 09:20:22 阅读数: 114

写在前面

在微办事架构中,ApiGateway起到了继往开来,不只能够根据客户端停止分类,也能够根据功效营业停止分类,并且对办事挪用办事也起到了很好的接口感化。今朝在各个云端中,根基上都供给了ApiGateway的功效(付费功效),经由过程SDK或在线停止设置装备摆设。

在Java体系中有Zuul和Kong都是比拟闻名的。

在.Net体系中,今朝比拟热点的(短短1年时辰已1000+stars了)

Ocelot,这是一个很是优异的基于 .Net Core的Api网关开源名目,咱们的在队长也到场了开辟,过年前又被归入了微软eShop微办事架构Demo名目中,作为其Api网关,今朝正在整合中,有乐趣能够存眷名目中新的的Ocelot Branch。

根基的利用体例在园中已有博主写过了,不过内容是之前版本的,新版本略微有点差别,仍是倡议大师看文档。经由过程文档咱们领会,Ocelot是经由过程一个json文件停止设置装备摆设的,以是在利用的时辰咱们只要要点窜这个json文件就能够够够够了,每次为差别的ApiGateway建立差别的名目比拟费事,So,明天来说下若何把Ocelot做成一个Docker镜像,如许利用的时辰只要要输出一条docker指令便可。

明天的Dockerfile我是Fork了Ocelot名目后在本身的Branch中弄的,间接是名目援用,这只是典范罢了,你能够从头建立一个特地的名目,经由过程Nuget办理增添对Ocelot的援用。

建立Dockerfile代码

Dockerfile只是一个文本文件,它每行代表Docker镜像的一个layer,每行由号令加参数构成,咱们经由过程编写简略的号令,就能够够够利用docker东西天生docker镜像。起首你要在名目中建立Dockerfile,请记着,把你的Dockerfile放在sln目次下,由于Dockerfile文件的build情况是根据你这个文件的目次来的,牢记,博主之前花了N天赋发明这个弱智的题目。docker command对文件名对巨细写敏感。

间接上代码:

FROM microsoft/aspnetcore:2.0 AS base #基于asp.net core 2.0镜像WORKDIR /appEXPOSE 80# 先利用asp.net core build镜像,而后复制名目到/src目次FROM microsoft/aspnetcore-build:2.0 AS buildWORKDIR /srcCOPY *.sln ./COPY demos/ApiGateway.Web/ApiGateway.Web.csproj demos/ApiGateway.Web/COPY src/Ocelot/Ocelot.csproj src/Ocelot/RUN dotnet restoreCOPY . .WORKDIR /src/demos/ApiGateway.WebRUN dotnet add package BuildBundlerMinifier#这里增添了对bundle的撑持,你能够不利用,由于我变动了款式,以是这里加上了这个。RUN dotnet restoreRUN dotnet build -c Release -o /app# 编译今后,咱们停止宣布,并间接复制到app目次FROM build AS publishRUN dotnet publish -c Release -o /app# 设定app目次为任务目次FROM base AS finalWORKDIR /appCOPY --from=publish /app .# 挂载/app/configurations目次VOLUME /app/ConfigurationsENTRYPOINT ["dotnet", "ApiGateway.Web.dll"]

上面便是我的Dockerfile文件了,我在名目中并不把configuration.json文件放到名目根目次,而是别的建立了一个Configurations目次,如许我挂载目次,能够在多个容器中同享数据。

天生Docker镜像

若是你的机械上装了Docker,那能够经由过程号令东西,在名目的根目次运转:

docker build -t myocelot:v1 .

注重这个号令后的.必然不要健忘哦

若是你机械上不装置Docker,也不干系,能够经由过程Docker堆栈或阿里云的容器办理停止天生,他们都是收费的,博主利用的是阿里云容器办理建立的,如许每次代码修改,它会主动天生新的镜像。

运转容器

当咱们有了镜像后,就能够够够够运转容器了,由于博主用的是阿里云容器办理,以是我须要先把镜像pull到运转情况(我用的是阿里云ECS)

docker pull registry.cn-hangzhou.aliyuncs.com/jamesying/ocelot-demodocker tag registry.cn-hangzhou.aliyuncs.com/jamesying/ocelot-demo myocelot:v1

博主经由过程pull号令拉了镜像后又经由过程tag号令从头定名了tagname。

随后咱们建立一个ocelot的设置装备摆设文件目次,并建立configurations.json文件:

mkdir /home/ocelottouch /home/ocelot/configurations.json

上面经由过程vi东西设置装备摆设你本身的config,上面是博主的:

{ "ReRoutes": [  {   "DownstreamPathTemplate": "/api/values/{id}",   "DownstreamScheme": "http",   "DownstreamHostAndPorts": [    {     "Host": "localhost",     "Port": 6002    },    {     "Host": "localhost",     "Port": 6001    }   ],   "LoadBalancer": "RoundRobin",   "UpstreamPathTemplate": "/api/v1/values/{id}",   "DownstreamHealthcheckPath": "/hc?apikey=testapi",   "UpstreamHttpMethod": [ "GET", "Put", "Delete" ]  } ], "GlobalConfiguration": {}}

前面咱们来运转容器:

docker run --name myocelot -p 6008:80 -v /home/ocelot:/app/configurations -d ocelot:v1

胜利运转今后,咱们就能够够够够经由过程6008端口拜候了,你能够经由过程 http://ocelot.jcsoft.xyz:6008 看下Demo。下图为演示截图:

写在最初

为甚么会有这个镜像呢,由于经由过程镜像天生很简略,并且设置装备摆设文件变动后,只要要docker restart myocelot就能够够够从头加载,很是简洁。明天的内容很简略,但很适用,固然这个镜像仍是有点完善的,由于Ocelot有良多功效,还须要在Startup.cs中注册一些service才能够利用,博主有个设法,弄个特地的Ocelot Demo,只要要经由过程config文件就能够够够主动注册响应办事。

也许你从Demo中看到了楼主对Ocelot的修改,楼主增添了 DownstreamHealthcheckPath属性,这个是为了对下流办事器停止Healthcheck的,并且楼主也PR给了Ocelot的名目担任人,不过Tom不太清晰这个属性有何用,以是我筹办做个Demo给他看下,这个属性很有效,除能够经由过程试图检查下流办事器状况,同时也能够在LoadBalance的时辰把有效的办事器给疏忽掉。

大师感觉Healthcheck是不是有须要呢?

以上便是本文的全数内容,但愿对大师的进修有所赞助,也但愿大师多多撑持网页设想。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家搜集公司供给自助建站平台搭建办事。更多资讯:tags标签

相干消息more

20
04月
HTML5 在canvas中绘制文本附结果图

一、绘制文本 在画图情况中供给了两种体例在canvas中绘制文本。 strokeText(text,x,y) : 在(x,y)处绘制空心的文... >>概况

22
04月
Docker-compose安排gitlab

Docker-compose安排gitlab1、装置Docker装置须要东西复制代码 代码以下:[root@vm_10_14_centos ... >>概况

26
03月
西方电缆:到场竞拍宁波北仑开辟区地块

简介:【事务简述】:2018年12月11日通知布告,公司到场位于宁波北仑开辟区穿山半岛峙南区块(郭巨白洋线南)共175,867平方米(263.8... >>概况

26
04月
PHP面向工具法式设想类的界说与用法简略示例

本文实例报告了PHP面向工具法式设想类的界说与用法。分享给大师供大师参考,详细以下:<?phpclass Person { ... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站