Функции 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.