【问题标题】:Trouble running Azure functions using runtime 4, .NET 6, out of process在进程外使用运行时 4、.NET 6 运行 Azure 函数时遇到问题
【发布时间】:2022-01-06 18:51:49
【问题描述】:

我正在尝试使用 .NET 6 和 dotnet-isolated 运行一组 Azure 函数。在本地运行时,正确调用 Program.cs/Main 方法。发布到 Azure 时,永远不会调用 Program.cs/Main 方法(这会导致失败,因为 DI 未初始化)。

我的 local.settings.json 看起来像:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "FUNCTIONS_EXTENSION_VERSION": "~4"
  }
}

在 Azure 门户上,查看实时流,我可以看到以下内容:

2022-01-06T18:38:22.618Z INFO  - Starting container for site
2022-01-06T18:38:22.619Z INFO  - docker run -d -p 8081:8081 --name lolnotsofast_0_b59188ad_msiProxy -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=lolnotsofast.azurewebsites.net -e WEBSITE_INSTANCE_ID=[lots of hex] appsvc/msitokenservice:[some #s]  

2022-01-06T18:38:22.619Z INFO  - Logging is not enabled for this container.
Please use https://aka.ms/linux-diagnostics to enable logging to see container logs here.

2022-01-06T18:38:28.950Z INFO  - Pulling image from Docker hub: mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated5.0-appservice-stage6
2022-01-06T18:38:29.127Z ERROR - DockerApiException: Docker API responded with status code=NotFound, response={"message":"manifest for mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated5.0-appservice-stage6 not found: manifest unknown: manifest tagged by \"4-dotnet-isolated5.0-appservice-stage6\" is not found"}

2022-01-06T18:38:29.128Z WARN  - Image pull failed. Defaulting to local copy if present.
2022-01-06T18:38:29.130Z ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)

2022-01-06T18:38:41.279Z INFO  - Stopping site cca-amznintegration-d-func because it failed during startup.

问题的症结似乎在于这个容器映像 mcr.microsoft.com/azure-functions/dotnet-isolated:4-dotnet-isolated5.0-appservice-stage6 是未知的。

我不知道这个名字是在哪里/如何被占卜的,也不知道它的含义。

关于如何从这里开始的任何想法?

谢谢!

【问题讨论】:

    标签: azure azure-functions azure-functions-runtime


    【解决方案1】:

    要从 Azure Container Registry 拉取 docker 镜像,需要设置如下环境变量:

    使用 Azure 门户:

    使用 Azure CLI: Azure CLI 命令az functionapp create 带参数:

    --deployment-container-image-name
    --docker-registry-server-password
    --docker-registry-server-user
    

    如果没有解决,请按照以下步骤操作:

    1. 在 Azure 容器注册表中启用管理员访问权限。
    2. 在 IAM 控制菜单中为应用服务添加贡献者角色(如果应用服务未反映,请转到您的应用服务 > 身份部分 > 将系统身份的状态更改为开启)并重新启动应用服务。

    参考:

    1. Azure Functions Create Config Env Variables
    2. Azure AppServices fails pulling an image while it is confirmed to be present in ACR by CLI · Issue #124 · Azure/acr (github.com)

    【讨论】:

    • 我没有使用容器注册表发布函数。仅在发布到“Azure 函数应用容器”时才支持 .net 6 进程外?我不能只发布到“Azure function app (linux)”吗?
    • i.imgur.com/kR0KpNq.png - 我能够成功地将我的 .net 6 独立函数应用发布到 Linux
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2018-10-15
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    相关资源
    最近更新 更多