如何使用多应用运行模板文件

解构多应用运行模板文件及其属性

Multi-App Run模板文件是一个YAML文件,您可以使用它同时运行多个应用程序。 在本指南中,您将学习如何:

  • 使用多应用程序模板
  • 查看已启动的应用程序
  • 停止多应用程序模板
  • 结构化多应用程序模板文件

使用多应用程序模板

您可以以以下两种方式之一使用多应用程序模板文件:

通过提供目录路径执行

当您提供一个目录路径时,CLI将尝试在该目录中默认命名为dapr.yaml的多应用运行模板文件。 如果文件未找到,CLI 将返回一个错误。

执行以下命令行工具命令来读取默认命名为 dapr.yaml 的多应用运行模板文件:


# the template file needs to be called `dapr.yaml` by default if a directory path is given

dapr run -f <dir_path>

dapr run -f -k <dir_path>

通过提供文件路径执行

如果多应用运行模板文件的名称不是dapr.yaml,那么您可以提供相对或绝对文件路径给命令:


dapr run -f ./path/to/<your-preferred-file-name>.yaml

dapr run -f -k ./path/to/<your-preferred-file-name>.yaml

查看已启动的应用程序

一旦多应用程序模板运行起来,您可以使用以下命令查看已启动的应用程序:

dapr list

停止多应用程序模板

随时使用以下任一命令停止多应用运行模板:


# the template file needs to be called `dapr.yaml` by default if a directory path is given

dapr stop -f <dir_path>

或者:

dapr stop -f ./path/to/<your-preferred-file-name>.yaml

# the template file needs to be called `dapr.yaml` by default if a directory path is given

dapr stop -f -k

或者:

dapr stop -f -k ./path/to/<your-preferred-file-name>.yaml

模板文件结构

多应用运行模板文件可以包括以下属性。 下面是一个示例模板,显示了配置了一些属性的两个应用程序。


version: 1
common: # optional section for variables shared across apps
  resourcesPath: ./app/components # any dapr resources to be shared across apps
  env:  # any environment variable shared across apps
    DEBUG: true
apps:
  - appID: webapp # optional
    appDirPath: .dapr/webapp/ # REQUIRED
    resourcesPath: .dapr/resources # deprecated
    resourcesPaths: .dapr/resources # comma separated resources paths. (optional) can be left to default value by convention.
    appChannelAddress: 127.0.0.1 # network address where the app listens on. (optional) can be left to default value by convention.
    configFilePath: .dapr/config.yaml # (optional) can be default by convention too, ignore if file is not found.
    appProtocol: http
    appPort: 8080
    appHealthCheckPath: "/healthz"
    command: ["python3", "app.py"]
    appLogDestination: file # (optional), can be file, console or fileAndConsole. default is fileAndConsole.
    daprdLogDestination: file # (optional), can be file, console or fileAndConsole. default is file.
  - appID: backend # optional
    appDirPath: .dapr/backend/ # REQUIRED
    appProtocol: grpc
    appPort: 3000
    unixDomainSocket: "/tmp/test-socket"
    env:
      DEBUG: false
    command: ["./backend"]

以下规则适用于模板文件中的所有路径:

  • 如果路径是绝对路径,则使用原样。
  • 所有在common部分下的相对路径都应该相对于模板文件路径提供。
  • 在apps部分下的appDirPath应该相对于模板文件路径提供。
  • 所有其他在apps部分下的相对路径都应该相对于appDirPath提供。

version: 1
common: # optional section for variables shared across apps
  env:  # any environment variable shared across apps
    DEBUG: true
apps:
  - appID: webapp # optional
    appDirPath: .dapr/webapp/ # REQUIRED
    appChannelAddress: 127.0.0.1 # network address where the app listens on. (optional) can be left to default value by convention.
    appProtocol: http
    appPort: 8080
    appHealthCheckPath: "/healthz"
    appLogDestination: file # (optional), can be file, console or fileAndConsole. default is fileAndConsole.
    daprdLogDestination: file # (optional), can be file, console or fileAndConsole. default is file.
    containerImage: ghcr.io/dapr/samples/hello-k8s-node:latest # (optional) URI of the container image to be used when deploying to Kubernetes dev/test environment.
    createService: true # (optional) Create a Kubernetes service for the application when deploying to dev/test environment.
  - appID: backend # optional
    appDirPath: .dapr/backend/ # REQUIRED
    appProtocol: grpc
    appPort: 3000
    unixDomainSocket: "/tmp/test-socket"
    env:
      DEBUG: false

以下规则适用于模板文件中的所有路径:

  • 如果路径是绝对路径,则使用原样。
  • 在apps部分下的appDirPath应该相对于模板文件路径提供。
  • 所有在app部分下的相对路径都应该相对于appDirPath提供。

模板属性


多应用运行模板的属性与 dapr run CLI 标志,在 CLI 参考文档中列出

属性 必填 Details 如何使用Dapr扩展来开发和运行Dapr应用程序
appDirPath 应用代码的路径 ./webapp/, ./backend/
appID 应用程序的应用程序 ID。 如果未提供,将从appDirPath派生 webapp, backend
resourcesPath Deprecated. Dapr 资源的路径。 可以按照惯例设置为默认值 ./app/components, ./webapp/components
resourcesPaths 逗号分隔的 Dapr 资源路径。 可以按照惯例设置为默认值 ./app/components, ./webapp/components
appChannelAddress 应用程序监听的网络地址。 可以按照惯例设置为默认值。 127.0.0.1 localhost
configFilePath 应用程序配置文件的路径 ./webapp/config.yaml
appProtocol Dapr 用于与应用程序通信的协议。 http, grpc
appPort 应用程序正在侦听的端口 8080, 3000
daprHTTPPort Dapr HTTP端口
daprGRPCPort Dapr GRPC端口
daprInternalGRPCPort dapr 内部 API 监听的 gRPC 端口;在从本地 DNS 组件解析值时使用
metricsPort Dapr 将 metrics 信息发送到的端口
unixDomainSocket Unix domain socket 目录挂载的路径。 如果指定了,与 Dapr sidecar 的通信将使用 unix domain sockets,与使用 TCP 端口相比,具有更低的延迟和更大的吞吐量。 在 Windows 操作系统上不可用。 /tmp/test-socket
profilePort 要监听的性能检测服务的端口
enableProfiling 通过 HTTP 端点启用性能检测
apiListenAddresses Dapr API监听地址
logLevel 日志详细程度。
appMaxConcurrency 应用程序的并发级别;默认为无限制
placementHostAddress
appSSL 当 Dapr 调用应用程序时启用 https
daprHTTPMaxRequestSize 请求正文的最大尺寸,单位为MB。
daprHTTPReadBufferSize Http 请求头读取缓冲区的最大大小,单位为KB。 这也限制了 HTTP 标头的最大大小。 默认是4KB。
enableAppHealthCheck 在应用程序上启用应用健康检查 true, false
appHealthCheckPath 健康检查文件的路径 /healthz
appHealthProbeInterval 以秒为单位探测应用程序健康状态的间隔
appHealthProbeTimeout 应用健康探测的超时时间(以毫秒为单位)
appHealthThreshold 应用被视为不健康之前的最大连续失败次数
enableApiLogging 启用从应用程序到 Dapr 的所有 API 调用的日志记录
runtimePath Dapr 运行时安装路径
env 映射到环境变量;每个应用程序应用的环境变量将覆盖所有应用程序共享的环境变量 DEBUG, DAPR_HOST_ADD
appLogDestination 用于输出应用日志的日志目的地; 其值可以是 file、console 或 fileAndConsole。 默认值为 fileAndConsole file, console, fileAndConsole
daprdLogDestination 用于输出 daprd 日志的日志目标;其值可以是文件(file),控制台(console)或文件和控制台(fileAndConsole)。 默认值为 file file, console, fileAndConsole

下一步

观看此视频以了解多应用运行的概述:


多应用运行模板的属性与 dapr run -k CLI 标志,在 CLI 参考文档中列出

属性 必填 Details 如何使用Dapr扩展来开发和运行Dapr应用程序
appDirPath 应用代码的路径 ./webapp/, ./backend/
appID 应用程序的应用程序 ID。 如果未提供,将从appDirPath派生 webapp, backend
appChannelAddress 应用程序监听的网络地址。 可以按照惯例设置为默认值。 127.0.0.1 localhost
appProtocol Dapr 用于与应用程序通信的协议。 http, grpc
appPort 应用程序正在侦听的端口 8080, 3000
daprHTTPPort Dapr HTTP端口
daprGRPCPort Dapr GRPC端口
daprInternalGRPCPort dapr 内部 API 监听的 gRPC 端口;在从本地 DNS 组件解析值时使用
metricsPort Dapr 将 metrics 信息发送到的端口
unixDomainSocket Unix domain socket 目录挂载的路径。 如果指定了,与 Dapr sidecar 的通信将使用 unix domain sockets,与使用 TCP 端口相比,具有更低的延迟和更大的吞吐量。 在 Windows 操作系统上不可用。 /tmp/test-socket
profilePort 要监听的性能检测服务的端口
enableProfiling 通过 HTTP 端点启用性能检测
apiListenAddresses Dapr API监听地址
logLevel 日志详细程度。
appMaxConcurrency 应用程序的并发级别;默认为无限制
placementHostAddress
appSSL 当 Dapr 调用应用程序时启用 https
daprHTTPMaxRequestSize 请求正文的最大尺寸,单位为MB。
daprHTTPReadBufferSize Http 请求头读取缓冲区的最大大小,单位为KB。 这也限制了 HTTP 标头的最大大小。 默认是4KB。
enableAppHealthCheck 在应用程序上启用应用健康检查 true, false
appHealthCheckPath 健康检查文件的路径 /healthz
appHealthProbeInterval 以秒为单位探测应用程序健康状态的间隔
appHealthProbeTimeout 应用健康探测的超时时间(以毫秒为单位)
appHealthThreshold 应用被视为不健康之前的最大连续失败次数
enableApiLogging 启用从应用程序到 Dapr 的所有 API 调用的日志记录
env 映射到环境变量;每个应用程序应用的环境变量将覆盖所有应用程序共享的环境变量 DEBUG, DAPR_HOST_ADD
appLogDestination 用于输出应用日志的日志目的地; 其值可以是 file、console 或 fileAndConsole。 默认值为 fileAndConsole file, console, fileAndConsole
daprdLogDestination 用于输出 daprd 日志的日志目标;其值可以是文件(file),控制台(console)或文件和控制台(fileAndConsole)。 默认值为 file file, console, fileAndConsole
containerImage 部署到 Kubernetes 开发/测试环境时要使用的容器映像的 URI。 ghcr.io/dapr/samples/hello-k8s-python:latest
createService 在部署到开发/测试环境时为应用程序创建一个Kubernetes服务。 true, false

下一步

观看此视频以了解 Kubernetes 中的多应用程序运行概述: