Функции Azure Kubernetes не может найти local.settings.json

Я пытаюсь опубликовать свое приложение с функциями Azure в Kubernetes, но при запуске этой команды получаю следующую ошибку

func kubernetes deploy --name my-function-api --namespace default --registry mycontainerregistry/docker-azure-function --csharp

Не удалось найти корень проекта. Ожидается найти один из host.json, local.settings.json в корне проекта.

Это мой файл докеров

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS installer-env

COPY . .
RUN cd /MyFunctionApp.Api && \
    mkdir -p /home/site/wwwroot && \
    dotnet publish *.csproj --output /home/site/wwwroot

COPY /MyFunctionApp.Api/host.json /home/site/wwwroot
COPY /MyFunctionApp.Api/local.settings.json /home/site/wwwroot

# To enable ssh & remote debugging on app service change the base image to the one below
# FROM mcr.microsoft.com/azure-functions/dotnet:2.0-appservice 
FROM mcr.microsoft.com/azure-functions/dotnet:3.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

Как видите, я попытался добавить следующие строки

COPY /MyFunctionApp.Api/host.json /home/site/wwwroot
COPY /MyFunctionApp.Api/local.settings.json /home/site/wwwroot

Но это, похоже, тоже не помогает, так что не уверен, что мне нужно сделать, чтобы это заработало? Любая помощь будет оценена.

1 ответ

Хорошо, так что понял это. Функции Azure не читаются local.settings.json или же settings.jsonпри работе в контейнере. Эти ключи необходимо установить как переменные среды.

Вам нужно иметь local.settings.json в той же папке, в которой вы запускаете func kubernetes deploy команда из, и это сгенерирует файл yaml с настройками, которые будут переданы в контейнер при его запуске.

NB: похоже, это не работает с настройкой CORSнастройки. У меня есть новый вопрос по этому поводу. Проблема CORS с функциями Azure внутри кластера AKS.

Другие вопросы по тегам