【问题标题】:How to set up dapr and docker compose with state management如何使用状态管理设置 dapr 和 docker compose
【发布时间】:2021-08-10 05:26:45
【问题描述】:

对 dapr 和 docker 非常陌生。

我跟着 dapr 开始。简单的 hello world 状态管理示例运行良好。是的,布鲁斯,我们都知道你是蝙蝠侠。

接下来我构建了weather forecast multi-container example for .NET Core。这很好用。 (我将我的前端剃须刀页面命名为“wxui”,将后端 webapi 命名为“wxapi”)。

最后,我想尝试在天气预报示例中添加状态管理。我修改了前端 Razor Pages 应用程序来存储和检索一些状态,并在我的 docker-compose 文件中添加了一个 redis 容器。

事情进展不顺利。

wxui-dapr 容器正在退出并显示以下消息:

time="2021-05-20T22:47:50.3179068Z" level=fatal msg="流程组件 statestore 错误:redis 存储:连接到 redis 时出错 本地主机:6379:拨打 tcp 127.0.0.1:6379:连接:连接被拒绝” app_id=wxui 实例=69254f9724b0 范围=dapr.runtime type=log 版本=1.1.2

我猜测 dapr sidecar 容器没有将本地端口 6379 映射到 redis 容器。但我不知道如何测试或修复它。

这是我的 docker-compose.yml 文件,如果有用的话:

version: '3.4'

services:
  redis:
    image: "redis:alpine"
    ports:
      - "6379:6379"
    networks:
      - wx-hello-world

  wxui:
    image: ${DOCKER_REGISTRY-}wxui
    build:
      context: .
      dockerfile: WxUI/Dockerfile
    ports:
      - "51000:50001"
    networks:
      - wx-hello-world
    depends_on:
      - redis

  wxui-dapr:
    image: "daprio/daprd:latest"
    command: [ "./daprd", "-app-id", "wxui", "-app-port", "80", "-components-path", "/components" ]
    volumes:
      - "./components/:/components"
    depends_on:
      - wxui
    network_mode: "service:wxui"

  wxapi:
    image: ${DOCKER_REGISTRY-}wxapi
    build:
      context: .
      dockerfile: WxAPI/Dockerfile
    ports:
      - "52000:50002"
    networks:
      - wx-hello-world
  
  wxapi-dapr:
    image: "daprio/daprd:latest"
    command: [ "./daprd", "-app-id", "wxapi", "-app-port", "80" ]
    depends_on:
      - wxui
      - wxapi
    network_mode: "service:wxapi"

networks:
  wx-hello-world:

我可以根据需要(要求)提供其他日志或数据。

谁能帮我找出导致wxui-dapr 容器退出的原因,以及如何解决它? 谢谢!

【问题讨论】:

    标签: docker docker-compose dapr


    【解决方案1】:

    所以在我有限的环境中,利用我对 docker 网络的有限了解,我能够让它工作。请随时提供更好的解决方案!

    我最终更改了 docker-compose.yml 文件以给 redis 容器一个主机名:

    version: '3.4'
    
    services:
      redis:
        image: "redis:alpine"
        hostname: wxstate
        ports:
          - "6379:6379"
        networks:
          - wx-hello-world
    

    然后更改 dapr statestore.yaml 组件以使用该主机名:

    apiVersion: dapr.io/v1alpha1
    kind: Component
    metadata:
      name: statestore
    spec:
      type: state.redis
      metadata:
      - name: redisHost
        value: wxstate:6379
      - name: redisPassword
        value: ""
      - name: actorStateStore
        value: "true"
    

    【讨论】:

    • 感谢您跟进解决方案,过去一天左右我一直在用头撞桌子
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2017-11-19
    • 2021-08-22
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多