最近,我使用具有 HttpTrigger 的 Azure Function(节点)创建了一个 docker 映像。这是默认生成的基本 HttpTrigger。我正在 Macbook Pro (MoJave) 上开发此程序,并且安装了以下工具。
NodeJs - 节点/10.13.0
适用于 macOS 的 .NET Core 2.1
Azure Function 核心工具(通过brew)
当我使用“func host start”在本地运行该函数时,一切正常,我可以看到函数加载消息。我还能够使用触发端点执行 Azure 函数。但是,当我尝试构建 Docker 容器并运行相同的容器时,我可以加载应用程序的主页,但无法到达函数端点。在日志中我只能看到以下内容;
Hosting environment: Production
Content root path: /
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.
我的 Docker 文件如下(由 Azure 核心工具生成);
FROM mcr.microsoft.com/azure-functions/node:2.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot
COPY . /home/site/wwwroot
当我尝试使用“microsoft/azure-functions-runtime:v2.0.0-beta1”作为基础映像时,我可以看到函数加载并且也可以访问http触发器。
是否缺少任何内容或者我需要使用不同的图像?
-
在 Dockerfile 中添加ENV AzureFunctionsJobHost__Logging__Console__IsEnabled=true
要启用日志记录,设置为基本图像中省略 https://github.com/Azure/azure-functions-host/issues/3469#issuecomment-429183447所以我们现在必须手动完成。
-
如果出现 401 Unauthorized,找到文件 function.json,将 authLevel 更改为anonymous
如果它是function
(模板中的默认值)。我们无法在具有 authlevel 之外的本地容器中访问 http 触发器anonymous
。因为我们没有功能键 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook#authorization-keys然而,在我们使用容器创建 Function 应用程序后,它们就可用了。
至于为什么我们可以访问http触发器function
当我们使用时的authlevelfunc host start
在容器外,本地运行时无论指定的身份验证级别如何,都会禁用授权。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)