Docker 容器中的 Azure 函数 Python 模型 2

Mar*_*ito 6 python azure azure-functions

我无法使用以下设置运行最小的工作示例:

我按照此处的说明进行操作,但添加了 V2 标志,具体来说:

 # init directory
 func init --worker-runtime python --docker -m V2
 # build docker image
 docker build -t foo .
 # run functions locally
 docker run -p 80:80 foo
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,运行时似乎都没有选择自动生成的 http 触发函数

 # init directory
 func init --worker-runtime python --docker -m V2
 # build docker image
 docker build -t foo .
 # run functions locally
 docker run -p 80:80 foo
Run Code Online (Sandbox Code Playgroud)

我认为日志的相关部分是:

info: Host.Startup[327]
      1 functions found
info: Host.Startup[315]
      0 functions loaded
info: Host.Startup[0]
      Generating 0 job function(s)
warn: Host.Startup[0]
      No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
info: Microsoft.Azure.WebJobs.Script.WebHost.WebScriptHostHttpRoutesManager[0]
      Initializing function HTTP routes
      No HTTP routes mapped
Run Code Online (Sandbox Code Playgroud)

因为当我使用“编程模型 V1”时,实际上会Microsoft.Azure.WebJobs.Script.WebHost.WebScriptHostHttpRoutesManager打印一些有关映射路线的信息。

我怎样才能解决这个问题?目前不支持这个吗?

Mar*_*ito 8

方面似乎正在发生变化。我可以通过更改自动生成的 dockerfile 中的环境变量来使其工作:

# To enable ssh & remote debugging on app service change the base image to the one below
# FROM mcr.microsoft.com/azure-functions/python:4-python3.10-appservice
FROM mcr.microsoft.com/azure-functions/python:4-python3.10

ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
    AzureWebJobsFeatureFlags=EnableWorkerIndexing \ # added by me
    AzureWebJobsStorage=UseDevelopmentStorage=true # added by me 

COPY requirements.txt /
RUN pip install -r /requirements.txt

COPY . /home/site/wwwroot
Run Code Online (Sandbox Code Playgroud)