如何建立与状态管理相结合的dapr和docker组件

如何建立与状态管理相结合的dapr和docker组件,docker,docker-compose,dapr,Docker,Docker Compose,Dapr,对dapr和docker来说都是新鲜事 我沿着dapr开始。简单的helloworld状态管理示例运行良好。是的,布鲁斯,我们都知道你是蝙蝠侠 所以下一步我建造了一个。这工作做得很好。(我将前端razor页面命名为“wxui”,后端webapi命名为“wxapi”) 最后,我想尝试将状态管理添加到天气预报器示例中。我修改了前端Razor Pages应用程序来存储和检索一些状态,并在docker compose文件中添加了一个redis容器 事情进展不顺利 wxui dapr容器正在退出,并显示以

对dapr和docker来说都是新鲜事

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

所以下一步我建造了一个。这工作做得很好。(我将前端razor页面命名为“wxui”,后端webapi命名为“wxapi”)

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

事情进展不顺利

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

time=“2021-05-20T22:47:50.3179068Z”级别=致命消息=“过程组件 statestore错误:redis store:在连接到redis时出错 本地主机:6379:拨号tcp 127.0.0.1:6379:连接:连接被拒绝” app_id=wxui instance=69254f9724b0 scope=dapr.runtime type=log ver=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.yml
文件,为redis容器提供了一个主机名:

version: '3.4'

services:
  redis:
    image: "redis:alpine"
    hostname: wxstate
    ports:
      - "6379:6379"
    networks:
      - wx-hello-world
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"
然后将dapr
statestore.yaml
组件更改为使用该主机名:

version: '3.4'

services:
  redis:
    image: "redis:alpine"
    hostname: wxstate
    ports:
      - "6379:6379"
    networks:
      - wx-hello-world
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"