我正在尝试通过使用官方microsoft/azure-functions-node8
映像来对Azure函数进行docker化。我根本找不到有关配置运行时的任何文档,并且每当我运行运行时时,都会发生以下错误:
The listener for function 'Functions.health' was unable to start.
Microsoft.Azure.WebJobs.Host.Listeners.FunctionListenerException: The listener for function 'Functions.health' was unable to start. ---> System.AggregateException: One or more errors occurred. (Microsoft Azure WebJobs SDK 'Storage' connection string is missing or empty. The Microsoft Azure Storage account connection string can be set in the following ways:
1. Set the connection string named 'AzureWebJobsStorage' in the connectionStrings section of the .config file in the following format <add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=http|https;AccountName=NAME;AccountKey=KEY" />, or
2. Set the environment variable named 'AzureWebJobsStorage', or
3. Set corresponding property of JobHostConfiguration.)
我在Google上搜索了一些片段,并设法编写了以下.config
文件,但是运行时仍然对我大喊大叫。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="AzureWebJobsStorage" connectionString="myconnectionstring"/>
</connectionStrings>
</configuration>
.config
文件格式在任何地方都有记录吗?
答案 0 :(得分:2)
这是一个古老的技巧,用于提醒我们默认的存储连接AzureWebJobsStorage
设置不正确,很久以前就对其进行了改进,使其更加易懂。请参见此issue和its fix。
就像在docker镜像中一样,此修复以某种方式被省略。
要解决您的问题,只需在Dockerfile中设置AzureWebJobsStorage
。
ENV AzureWebJobsStorage=DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx==;EndpointSuffix=core.windows.net
请注意,如果您使用AzureWebJobsStorage
以外的名称,则需要使用connection
文件中的名称来设置function.json
参数。
更新
根据Connor的评论,我提到的修复程序已添加到cli工具中,而docker image并没有利用它,因此我们仍然会看到此原始运行时错误。