在 Docker 容器中运行 Azure Function

2024-11-20#Azure#Docker

Azure Functions (Azure Functions) 是微软的一个无服务器解决方案。在某些情况下,可能需要在 Docker 中运行 Azure Function。本文记录一些开发要点。

运行时镜像 🔗

微软在 Docker Hub 的 microsoft/azure-functions-dotnet 提供了 Azure Function 的运行时镜像。

Durable Function 中的 Task Hub Name 🔗

Durable Functions 是 Azure Functions 的一项特性,它允许你在无服务器计算环境中编写有状态函数。在函数运行时会将状态信息保存在外部存储,比如 Azure Storage Account 中。需要注意的是,这些外部存储资源的名称是根据 Task Hub名称生成的。而在不同的运行环境和不同版本的 Durable 函数中,默认的 Task Hub 名称是不同的。《Task hub names 》 中的表格列出了其中的差异:

Durable extension versionDefault task hub name
2.xWhen deployed in Azure, the task hub name is derived from the name of the function app. When running outside of Azure, the default task hub name is TestHubName.
1.xThe default task hub name for all environments is DurableFunctionsHub.

因此,对于 2.x 版本的 Durable 函数,在 Azure中的Hub名称是根据函数应用生成的;而在 Docker容器运行时,默认的名称就是 TestHubName

通常在正式的项目中,对于不同的运行环境(devstagingprod等),应该使用不同的存储资源,意味着应该使用不同的Hub名称。为此,根据《Task hub names 》 一节,可通过如下方法修改Hub名称:

  1. host.json 文件中定义 hubName,其值为 %TaskHubName%
  2. 在运行容器时,设置环境变量 TaskHubName 为自定义的名称。

加载中...