【发布时间】:2021-01-12 23:31:17
【问题描述】:
这可能是一件简单的事情,但我正在努力弄清楚如何在 Azure Functions 3.0 下,在 docker 容器中运行服务总线触发器(或任何后台任务触发器),以便在本地运行(对于测试)并最终在 K8S 中。
我发现的大多数示例(包括来自 MS 的)似乎都使用了简单的 HTTP 触发器。虽然我使用的是已编译的 C# 函数,但我发现了一个用于服务总线的 python 示例,但目前还不清楚您是如何在本地容器中运行函数一次以进行测试或在无 AKS环境。我发现的示例没有引用此步骤 - 它似乎是“魔术”。
我使用了 func init --docker-only --csharp 来修补这个 docker 文件:
FROM mcr.microsoft.com/azure-functions/dotnet:3.0
COPY bin/Release/netcoreapp3.1/publish/bin/ /home/site/wwwroot
ENV AzureWebJobsScriptRoot=/home/site/wwwroot
但这并没有告诉我我需要如何启动 azure 函数。 azure 函数基础 docker 镜像不包含 func 工具,因此我可以在 dockerfile 中调用 func xxxxxx 来启动函数。
我期待类似 ENTRYPOINT 之类的东西,我将其用于普通 Web api 或其他一些步骤来调用 BASH 命令来启动 azure 函数,但由“func”创建的默认 dockerfile 不包括此。
我认为这并不重要,但最终我们将在本地 K8S 部署上运行这些以进行开发测试 - 它们可能永远不会真正在 AKS 本身中运行。
【问题讨论】:
-
最终它是神奇的,因为它正在工作。关键是将 ENV AzureFunctionsJobHost__Logging__Console__IsEnabled=true 添加到 docker 文件中。然后它会写出它执行的主机的日志记录,然后您可以看到正在启动的功能。