CentOS7安装dapr并运行.net5程序

Dapr官网https://docs.dapr.io

首先安装好docker,这里就不说了。
一、安装 Dapr CLI 脚手架工具(我这里装的1.1版)
可以通过wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash这种方式安装

也可以手动下载安装,下载好dapr_linux_amd64.tar.gz别下载错了
放到centos7的/usr/local/bin目录下
进入目录cd /usr/local/bin
解压文件tar -zvxf dapr_linux_amd64.tar.gz
设置权限chmod 777 dapr
验证脚本架的安装dapr
1.3.0出来后,后来我又手动去下载安装了1.3.0的CLI,并且dapr uninstall --all移除旧版运行时,然后安装新版dapr init --runtime-version=1.3.0
.net5 demo代码https://download.csdn.net/download/junshangshui/20670286
二、初始化dapr
运行 dapr init会自动下载Dapr的运行时 daprd ,并在Docker中启动3个容器:
dapr_placement:镜像是daprio/dapr,用于Dapr的Actor应用的注册
dapr_zipkin:镜像是openzipkin/zipkin,用于分布式跟踪
dapr_redis:镜像是redis,用于状态存储和发布 消息订阅处理
过一段时间下载完后输入docker images就可看到这三个镜像了
再输入docker ps 可看到这三个镜像的容器
输入dapr --version 可看到CLI version: 1.1.0 Runtime version: 1.1.2
验证组件目录已初始化ls $HOME/.dapr您应该看到bin components config.yaml
输入echo $HOME可看到结果为/root

三、安装.net5 SDK
官网说明https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
安装准备
将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。
Sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

安装 SDKsudo yum install dotnet-sdk-5.0 -y
使用 dotnet --list-sdksdotnet --list-runtimes 命令查看安装了哪些版本

四、dapr运行.net5程序
新建两个.net5 webapi项目,如下图,都安装Dapr.AspNetCore包
在这里插入图片描述
两个Startup都要添加AddDapr(),如下

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddDapr();
}

UserController和TestController的代码分别如下

namespace Service1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class UserController : ControllerBase
    {
        private readonly ILogger<UserController> _logger;
        public UserController(ILogger<UserController> logger)
        {
            _logger = logger;
        }
        [HttpGet]
        public IEnumerable<string> Get()
        {
            _logger.LogInformation("查询用户信息");
            return new[] { "张三", "李四", "王五" };
        }
    }
}
namespace Service2.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class TestController : ControllerBase
    {
        private readonly ILogger<TestController> _logger;
        public TestController(ILogger<TestController> logger)
        {
            _logger = logger;
        }
        [Route("info")]
        [HttpGet]
        public IEnumerable<string> Get()
        {
            // 1、创建Dapr客户端
            var daprClient = new DaprClientBuilder().Build();
            // 2、访问service1
            var content = daprClient.InvokeMethodAsync<IEnumerable<string>>(HttpMethod.Get, "service1", "User").Result;
            return content;
        }
    }
}

然后编译并发布这两个webapi
将发布后的service1和service2放到虚拟机中的/root/projects目录下
cd /root/projects/service1
dapr run --app-id service1 --app-port 5000 --dapr-http-port 6000 -- dotnet Service1.dll --urls "http://*:5000"
再新开一个终端
cd /root/projects/service2
dapr run --app-id service2 --app-port 7000 --dapr-http-port 8000 -- dotnet Service2.dll --urls "http://*:7000"

输入dapr list可看到service1和service2已启动

在命令行分别输入
curl http://localhost:6000/v1.0/invoke/service1/method/user
curl http://localhost:8000/v1.0/invoke/service2/method/test/info
可打印出两次查询用户信息的log控制台日志
在这里插入图片描述
开放端口firewall-cmd --zone=public --add-port=5000/tcp --add-port=7000/tcp --permanent
重启防火墙firewall-cmd --reload

在我的win10里打开浏览器,输入虚拟机中centos的地址访问
http://192.168.3.180:5000/user
http://192.168.3.180:7000/Test/info
都能成功返回信息

Sidecar意义在于解耦基础设施和核心业务。
--dapr-http-port表示Dapr边车暴露的HTTP端口(默认50001)
--dapr-grpc-port表示Dapr边车暴露的gRPC端口(默认3500)

四、win10中docker运行.net5程序和dapr
service1项目和service2项目通过右键添加了Docker支持,还添加了docker-compose。
在这里插入图片描述
docker-compose.yml的代码如下

version: '3.4'

services:
  service1:
    image: ${DOCKER_REGISTRY-}service1
    build:
      context: .
      dockerfile: Service1/Dockerfile

  service1-dapr:
    image: "daprio/daprd:1.2.0"
    network_mode: "service:service1"
    depends_on:
      - service1

  service2:
    image: ${DOCKER_REGISTRY-}service2
    build:
      context: .
      dockerfile: Service2/Dockerfile

  service2-dapr:
    image: "daprio/daprd:1.2.0"
    network_mode: "service:service2"
    depends_on:
      - service2

docker-compose.override.yml的代码如下:

version: '3.4'

services:
  service1:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "5001:80"

  service1-dapr:
    command: ["./daprd",
      "-app-id", "service1",
      #"-app-port", "5001",#不是5001而是用80
      "-app-port", "80",
      #"-dapr-http-port", "6000"#没有成功,以后再说
      ]

  service2:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "5002:80"

  service2-dapr:
    command: ["./daprd",
      "-app-id", "service2",
      #"-app-port", "5002",#不是5002而是用80
      "-app-port", "80",
      #"-dapr-http-port", "8000"#没有成功,以后再说
      ]

用docker for windows桌面版,下面的是1.2.0版的dapr,如下图
在这里插入图片描述
在VS2019中,以Dock-compose运行,成功后如下
在这里插入图片描述
在我的win10里打开浏览器,输入地址,访问成功
http://localhost:5001/user
http://localhost:5002/Test/info
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值