• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > .netcore 使用surging框架发布到docker

.netcore 使用surging框架发布到docker

作者:landonzeng 字体:[增加 减小] 来源:互联网

本文主要包含netcore,docker,aspnetcore,docker等服务器相关知识,landonzeng 希望可以进行参考

demo运行在windows的docker中,系统是win10,所以需要先下载Docker for Windows,安装完毕后系统会重启,然后桌面上可以找到Docker for Windows的快捷图标,右下角有个鲸鱼小图标

单击右键,选择菜单中的Kitematic

会提示你下载Kitematic,自行下载后解压即可,将Kitematic快捷到桌面;

打开Kitematic,在搜索栏中下载好RabbitMQ、redis、consul相关镜像,因为这些是surging运行的先决条件。

接着去GitHub上下载surging网关项目,修改其中的gatewaySettings.json中Register下的Address地址,对应的事consul docker镜像的ip

具体如何查看其ip,看如下操作:

打开Kitematic,点击左下角,如图:

进入到命令窗口,输入docker container ls或者 docker ps -a 查看docker,

可以看到现在运行的docker的相关信息,

如图:

然后查看consul的相关配置,输入docker inspect 镜像的 containerID,如consul的id是b0e98b94638c,输入命令如下:docker inspect b0e98b94638c,

显示这个docker的配置,内容会很多,不过ip的信息在最后,如图

找到其中的ip是多少,然后修改surging网关中的consul地址为:"Address": "172.17.0.4:8500",其他配置根据上面的操作进行修改,如redis 镜像地址的查找和修改等;

修改好surging的网关配置后在Surging.ApiGateway项目上单击右键,由于我项目中已经添加过,所以该处为灰色,如图:

新建docker-Compose后修改其中docker-compose.yml的配置如下:

在后面添加docker的外部端口和内部端口的映射和网络模式,这里我们都使用桥接模式,包括之前的consul、RabbitMQ、redis都是同一模式,这样他们会在同一VLAN下,

然后运行网关,如下:

接下来新建一个解决方案,方案名随意,喜欢就好,由于时间比较短,这里我简单的处理,不清楚的可以留言

新建Service.A,然后在其下新建控制台应用Service.A、Service.B、Service.C,新建类库Service.A.Service、Service.B.Service、Service.C.Service;

编辑Service.A.csporj、Service.B.csporj、Service.C.csporj,如下

将其中的引用包都复制过去,分别修改一下对应的Service,即其中的<ProjectReference Include="..\Service.A.Service\Service.A.Service.csproj" />,Service.A引用Service.A.Service,Service.B引用Service.B.Service

Service.C引用Service.C.Service;

类库Service.A.Service、Service.B.Service、Service.C.Service中都引用

<PackageReference Include="surging" Version="0.5.4" />

如图:

由于代码很多地方相识,以下我只说Service.A,和Service.A.Service;

Service.A 中新增Configs文件夹,下面添加log4net.config,log4net.config代码如下:

<log4net>

 <root>

 <level value="Error" />

 <!-- <appender-ref ref="RollingLogFileAppender" /> -->

 <appender-ref ref="ErrorRollingLogFileAppender" />

 </root>

 <appender name="ErrorRollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net" LEVEL="ERROR">

 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

 <param name="File" value="c:\surging\Error\" />

 <param name="AppendToFile" value="true" />

 <param name="RollingStyle" value="Composite" />

 <param name="DatePattern" value="_yyyyMMddHH.TXT" />

 <param name="StaticLogFileName" value="false" />

 <param name="MaxSizeRollBackups" value="-1" />

 <param name="MaximumFileSize" value="5MB" />

 <layout type="log4net.Layout.PatternLayout,log4net">

  <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />

 </layout>

 <filter type="log4net.Filter.LevelRangeFilter">

  <param name="LevelMin" value="ERROR" />

  <param name="LevelMax" value="FATAL" />

 </filter>

 </appender>

</log4net>

然后新增cacheSettings.json其中Map:Properties下的value的值是redis地址

{ 
 "CachingSettings": [
  {
  "Id": "ddlCache",
  "Class": "Surging.Core.Caching.RedisCache.RedisContext,Surging.Core.Caching",
  "Properties": [
   {
   "Name": "appRuleFile",
   "Ref": "rule"
   },
   {
   "Name": "dataContextPool",
   "Ref": "ddls_sample",
   "Maps": [
    {
    "Name": "Redis",
    "Properties": [
    {
     "value": "172.17.0.2:6379::1"
     }
    ]
    },
    {
    "Name": "MemoryCache"
    }
   ]
   },
   {
   "Name": "defaultExpireTime",
   "value": "120"
   },
   {
   "Name": "connectTimeout",
   "Value": "120"
   },
   {
   "Name": "minSize",
   "Value": "1"

   },
   {
   "Name": "maxSize",
   "Value": "10"
   }
  ]
  }
 ]
}

新增eventBusSettings.json,其中的EventBusConnection对应的是RabbitMQ docker的地址

{
 "EventBusConnection": "172.17.0.3",
 "EventBusUserName": "guest",
 "EventBusPassword": "guest"
} 

Program.cs的代码如下

using Autofac;
using Surging.Core.Codec.MessagePack;
using Surging.Core.Consul;
using Surging.Core.Consul.Configurations;
using Surging.Core.CPlatform;
using Surging.Core.CPlatform.Utilities;
using Surging.Core.DotNetty;
using Surging.Core.EventBusRabbitMQ;
using Surging.Core.Log4net;
using Surging.Core.ProxyGenerator;
using Surging.Core.ServiceHosting;
using Surging.Core.ServiceHosting.Internal.Implementation;
using System;
using System.Text;
namespace Service.A
{
 class Program
 {
  static void Main(string[] args)
  {
   NewMethod();
  }
  private static void NewMethod()

  {

   Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

   var host = new ServiceHostBuilder()

    .RegisterServices(builder =>

    {

     builder.AddMicroService(option =>

     {

      option.AddServiceRuntime();

      option.AddRelateService();

      //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181"));

      option.UseConsulManager(new ConfigInfo("172.17.0.4:8500"));

      option.UseDotNettyTransport();

      option.UseRabbitMQTransport();

      option.AddRabbitMQAdapt();

      //option.UseProtoBufferCodec();

      option.UseMessagePackCodec();

      builder.Register(p => new CPlatformContainer(ServiceLocator.Current));

     });

    })

    .SubscribeAt()

    .UseLog4net("Configs/log4net.config")

    //.UseServer("127.0.0.1", 98)

    //.UseServer("127.0.0.1", 98,“true”) //自动生成Token

    //.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token

    .UseServer(options =>

    {

     options.Ip = "172.17.0.6";

     options.Port = 9990;

     options.Token = "True";

     options.ExecutionTimeoutInMilliseconds = 30000;

     options.MaxConcurrentRequests = 200;

     options.NotRelatedAssemblyFiles = "Centa.Agency.Application.DTO\\w*|StackExchange.Redis\\w*";

    })

    .UseProxy()

    .UseStartup<Sta
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • .netcore 使用surging框架发布到docker

相关文章

  • openstack使用openvswitch实现vxlan的方法
  • 详解Docker 容器基础系统镜像打包
  • 详解修改docker时区及docker常用命令
  • docker daemon远程连接设置详解
  • docker常用命令操作方法
  • Docker 中的容器完全解析
  • 211高校利用红帽虚拟化方案 高效地集成IT系统
  • 详解利用ELK搭建Docker容器化应用日志中心
  • Docker学习笔记之容器查看启动终止删除的方法
  • VMware12和CentOS7共享文件夹问题解析

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 详解Docker Registry之删除镜像、垃圾回收
    • CentOS 出现no space left on device错误解决办法
    • 详解使用export/import导出和导入docker容器
    • VirtualBox 虚拟机中安装 Ubuntu 12.04(图文教程)
    • VMware10.0.7安装centos6.3,连接xshell
    • CentOS7 Nvidia Docker环境搭建
    • VMware虚拟机安装CentOS 6.9图文教程
    • Docker创建MySQL容器的方法
    • 在VMWare上安装ubuntu及VMWare Tools详细教程
    • 浅谈docker学习之docker数据卷(volume)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有