首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux容器上Azure函数的Docker问题-函数丢失导致函数运行时为404

Linux容器上Azure函数的Docker问题-函数丢失导致函数运行时为404
EN

Stack Overflow用户
提问于 2020-05-10 12:11:38
回答 2查看 3.4K关注 0票数 2

这个问题是这个问题的延续:Azure function HTTP triggered on linux container - function not working 404

前一个更多的是要找出什么是根本原因。而MS支持人员向我指出,什么可能是根本原因(但这一点仍有待证实);

首先,这里是我的文件夹结构(这很重要,因为网络上的大多数示例都假定了项目文件夹中的dockerfile。这是不可能的,一旦你有一个参考库建立)

代码语言:javascript
复制
Solution (root folder of project)
    [Project] BuildChat <-- Referenced project by MyFunctionFolder
    [Project] MyFunctionFolder
        MyFunctionFolder.csproj
        MyFunctionFolderFunc.cs <-- Inside this file there is method run with [FunctionName("MyFunctionFolderFunc")]
        [All Files] RestOfAzureFunctionFiles
    [File] MyFunctionFolderDocker

我的初始停靠文件(由MS工具创建,Add->Docker支持)是:

代码语言:javascript
复制
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/azure-functions/dotnet:3.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["BuildChat/BuildChat.csproj", "BuildChat/"]
COPY ["MyFunctionFolder/MyFunctionFolder.csproj", "MyFunctionFolder/"]
RUN dotnet restore "MyFunctionFolder/MyFunctionFolder.csproj"
COPY . .
WORKDIR "/src/MyFunctionFolder"
RUN dotnet build "MyFunctionFolder.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyFunctionFolder.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/app

在得到支持人员的回复后(我需要把它放在/home/site/wwwroot中),最好是使用:

func init LocalFunctionsProject --worker-runtime dotnet --docker

我想出了我现在的码头文件:

代码语言:javascript
复制
FROM mcr.microsoft.com/azure-functions/dotnet:3.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["BuildChat/BuildChat.csproj", "BuildChat/"]
COPY ["MyFunctionFolder/MyFunctionFolder.csproj", "MyFunctionFolder/"]
RUN dotnet restore "MyFunctionFolder/MyFunctionFolder.csproj"
COPY . .
WORKDIR "/src/MyFunctionFolder"
RUN dotnet build "MyFunctionFolder.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyFunctionFolder.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/app

模板文件,我从该文件中创建了以下内容:

代码语言:javascript
复制
FROM microsoft/dotnet:2.2-sdk AS installer-env

COPY . /src/dotnet-function-app
RUN cd /src/dotnet-function-app && \
    mkdir -p /home/site/wwwroot && \
    dotnet publish *.csproj --output /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:2.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

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

我必须包含引用的项目,并更改图片以适应Azure函数3版本(此模板显然用于版本2),我还添加了还原包步骤。

但是它不起作用了(和上一次一样),我现在有点沮丧:我正在上网,我看到了几十个码头文件,据称这些文件是他们的作者发布蓝色功能的工具。

例如,在这个SOF:Azure function HTTP Request 404 when published to Azure through Docker and Visual Studio

在接受的答复中,dockerfile是:

代码语言:javascript
复制
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY . ./
RUN dotnet publish myfunction -c Release -o myfunction /out

FROM mcr.microsoft.com/azure-functions/dotnet:3.0 AS base
WORKDIR /app
EXPOSE 80

COPY --from=build-env /app/ao-backendfunctions/out .

ENV AzureWebJobsScriptRoot=/app
ENV AzureFunctionsJobHost__Logging__Console__IsEnabled=true

在本例中-显然它位于/app文件夹(而不是在/home/site/wwwroot中)-wtf:d

这张票的作者贴出了一篇文章,这的确对他有好处--与上面的完全不同:

代码语言:javascript
复制
FROM mcr.microsoft.com/azure-functions/dotnet:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /src
COPY ["FunctionTestAppLinux/FunctionTestAppLinux.csproj", "FunctionTestAppLinux/"]
RUN dotnet restore "FunctionTestAppLinux/FunctionTestAppLinux.csproj"
COPY . .
WORKDIR "/src/FunctionTestAppLinux"
RUN dotnet build "FunctionTestAppLinux.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "FunctionTestAppLinux.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/app

发布到/app :)

在一些博客上:https://spin.atomicobject.com/2020/01/09/azure-functions-docker-container/的版本是:

代码语言:javascript
复制
FROM microsoft/azure-functions-dotnet-core2.0:2.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot
COPY ./bin/Release/netstandard2.0 /home/site/wwwroot

另一个博客(https://blog.gutek.pl/2018/03/12/azure-functions-w-docker/)工作版本是:

代码语言:javascript
复制
FROM microsoft/azure-functions-runtime:2.0.0-jessie
ENV AzureWebJobsScriptRoot=/home/site/wwwroot

COPY . /home/site/wwwroot

没有任何建筑,修复nuget包裹。

老实说,我的脑子完全搞砸了:)我明白,有时有不止一种方法可以达到相同的方式,但很明显,AzureWebJobsScriptRoot不可能同时成为/home/site/wwwroot/app :)而且这两个版本似乎都适用于不同的人:)

下面是来自我的容器构建的Azure Portal的日志:

代码语言:javascript
复制
2020_05_10_RD501AC582A899_docker.log:
2020-05-10 11:17:58.951 INFO  - Recycling container because of AppFrameworkVersionChange and appFrameworkVersion = myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1
2020-05-10 11:18:12.234 INFO  - Pulling image: myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1
2020-05-10 11:18:15.314 INFO  - 20200510.1 Pulling from mobile/myazurefunctionfolder
2020-05-10 11:18:15.315 INFO  - 54fec2fa59d0 Already exists
2020-05-10 11:18:15.315 INFO  - 573788d8ba26 Already exists
2020-05-10 11:18:15.315 INFO  - 65471ff99618 Already exists
2020-05-10 11:18:15.315 INFO  - bc784bb97e07 Already exists
2020-05-10 11:18:15.315 INFO  - 5b12b0dacfda Pulling fs layer
2020-05-10 11:18:15.315 INFO  - 5b12b0dacfda Downloading 4MB / 21MB
2020-05-10 11:18:15.316 INFO  - 5b12b0dacfda Downloading 11MB / 21MB
2020-05-10 11:18:15.317 INFO  - 5b12b0dacfda Downloading 14MB / 21MB
2020-05-10 11:18:18.346 INFO  - 5b12b0dacfda Downloading 19MB / 21MB
2020-05-10 11:18:18.347 INFO  - 5b12b0dacfda Verifying Checksum
2020-05-10 11:18:18.347 INFO  - 5b12b0dacfda Download complete
2020-05-10 11:18:18.363 INFO  - 5b12b0dacfda Extracting 448KB / 21MB
2020-05-10 11:18:18.384 INFO  - 5b12b0dacfda Extracting 896KB / 21MB
2020-05-10 11:18:19.878 INFO  - 5b12b0dacfda Extracting 2MB / 21MB
2020-05-10 11:18:19.972 INFO  - 5b12b0dacfda Extracting 3MB / 21MB
2020-05-10 11:18:19.972 INFO  - 5b12b0dacfda Extracting 4MB / 21MB
2020-05-10 11:18:19.973 INFO  - 5b12b0dacfda Extracting 6MB / 21MB
2020-05-10 11:18:19.973 INFO  - 5b12b0dacfda Extracting 6MB / 21MB
2020-05-10 11:18:19.973 INFO  - 5b12b0dacfda Extracting 7MB / 21MB
2020-05-10 11:18:21.199 INFO  - 5b12b0dacfda Extracting 9MB / 21MB
2020-05-10 11:18:21.549 INFO  - 5b12b0dacfda Extracting 10MB / 21MB
2020-05-10 11:18:21.761 INFO  - 5b12b0dacfda Extracting 11MB / 21MB
2020-05-10 11:18:21.966 INFO  - 5b12b0dacfda Extracting 11MB / 21MB
2020-05-10 11:18:22.227 INFO  - 5b12b0dacfda Extracting 12MB / 21MB
2020-05-10 11:18:22.472 INFO  - 5b12b0dacfda Extracting 12MB / 21MB
2020-05-10 11:18:22.763 INFO  - 5b12b0dacfda Extracting 13MB / 21MB
2020-05-10 11:18:23.183 INFO  - 5b12b0dacfda Extracting 13MB / 21MB
2020-05-10 11:18:23.362 INFO  - 5b12b0dacfda Extracting 14MB / 21MB
2020-05-10 11:18:23.755 INFO  - 5b12b0dacfda Extracting 14MB / 21MB
2020-05-10 11:18:24.831 INFO  - 5b12b0dacfda Extracting 14MB / 21MB
2020-05-10 11:18:25.302 INFO  - 5b12b0dacfda Extracting 15MB / 21MB
2020-05-10 11:18:25.605 INFO  - 5b12b0dacfda Extracting 16MB / 21MB
2020-05-10 11:18:25.857 INFO  - 5b12b0dacfda Extracting 16MB / 21MB
2020-05-10 11:18:26.230 INFO  - 5b12b0dacfda Extracting 17MB / 21MB
2020-05-10 11:18:27.029 INFO  - 5b12b0dacfda Extracting 17MB / 21MB
2020-05-10 11:18:27.276 INFO  - 5b12b0dacfda Extracting 18MB / 21MB
2020-05-10 11:18:27.394 INFO  - 5b12b0dacfda Extracting 18MB / 21MB
2020-05-10 11:18:27.843 INFO  - 5b12b0dacfda Extracting 19MB / 21MB
2020-05-10 11:18:28.127 INFO  - 5b12b0dacfda Extracting 19MB / 21MB
2020-05-10 11:18:28.801 INFO  - 5b12b0dacfda Extracting 21MB / 21MB
2020-05-10 11:18:30.263 INFO  - 5b12b0dacfda Pull complete
2020-05-10 11:18:30.360 INFO  -  Digest: sha256:b3245ab363778662212e218dfc62f6fe1bcbb868de4edebeb975692264e39360
2020-05-10 11:18:30.408 INFO  -  Status: Downloaded newer image for myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1
2020-05-10 11:18:30.436 INFO  - Pull Image successful, Time taken: 0 Minutes and 18 Seconds
2020-05-10 11:18:30.473 INFO  - Starting container for site
2020-05-10 11:18:30.473 INFO  - docker run -d -p 7266:80 --name myazurefunctionfolder_7_60c643dd -e WEBSITE_CORS_ALLOWED_ORIGINS=https://functions.azure.com,https://functions-staging.azure.com,https://functions-next.azure.com -e WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=myazurefunctionfolder -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=myazurefunctionfolder.azurewebsites.net -e WEBSITE_INSTANCE_ID=8da8a02a13a3cdde53ad6aafcd4eb717ca00dd6bc65ff07378d74a0cd859e1c0 -e HTTP_LOGGING_ENABLED=1 myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1  

2020-05-10 11:18:41.180 INFO  - Starting container for site
2020-05-10 11:18:41.180 INFO  - docker run -d -p 7751:8081 --name myazurefunctionfolder_7_60c643dd_middleware -e WEBSITE_CORS_ALLOWED_ORIGINS=https://functions.azure.com,https://functions-staging.azure.com,https://functions-next.azure.com -e WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=myazurefunctionfolder -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=myazurefunctionfolder.azurewebsites.net -e WEBSITE_INSTANCE_ID=8da8a02a13a3cdde53ad6aafcd4eb717ca00dd6bc65ff07378d74a0cd859e1c0 -e HTTP_LOGGING_ENABLED=1 appsvc/middleware:2001061754 /Host.ListenUrl=http://0.0.0.0:8081 /Host.DestinationHostUrl=http://172.16.1.6:80 /Host.UseFileLogging=true 

2020-05-10 11:18:46.446 INFO  - Initiating warmup request to container myazurefunctionfolder_7_60c643dd for site myazurefunctionfolder
2020-05-10 11:19:02.506 INFO  - Waiting for response to warmup request for container myazurefunctionfolder_7_60c643dd. Elapsed time = 16.0677747 sec
2020-05-10 11:19:18.517 INFO  - Waiting for response to warmup request for container myazurefunctionfolder_7_60c643dd. Elapsed time = 32.0791795 sec
2020-05-10 11:19:36.436 INFO  - Waiting for response to warmup request for container myazurefunctionfolder_7_60c643dd. Elapsed time = 49.9977817 sec
2020-05-10 11:20:05.041 INFO  - Container myazurefunctionfolder_7_60c643dd for site myazurefunctionfolder initialized successfully and is ready to serve requests.
2020-05-10 11:20:05.042 INFO  - Initiating warmup request to container myazurefunctionfolder_7_60c643dd_middleware for site myazurefunctionfolder
2020-05-10 11:20:11.370 INFO  - Container myazurefunctionfolder_7_60c643dd_middleware for site myazurefunctionfolder initialized successfully and is ready to serve requests.
2020-05-10 11:20:28.875 INFO  - Pulling image: myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1
2020-05-10 11:20:32.177 INFO  - 20200510.1 Pulling from mobile/myazurefunctionfolder
2020-05-10 11:20:32.178 INFO  -  Digest: sha256:b3245ab363778662212e218dfc62f6fe1bcbb868de4edebeb975692264e39360
2020-05-10 11:20:32.179 INFO  -  Status: Image is up to date for myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1
2020-05-10 11:20:32.198 INFO  - Pull Image successful, Time taken: 0 Minutes and 3 Seconds
2020-05-10 11:20:32.565 INFO  - Starting container for site
2020-05-10 11:20:32.566 INFO  - docker run -d -p 6657:80 --name myazurefunctionfolder_8_08a93355 -e WEBSITE_CORS_ALLOWED_ORIGINS=https://functions.azure.com,https://functions-staging.azure.com,https://functions-next.azure.com -e WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=myazurefunctionfolder -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=myazurefunctionfolder.azurewebsites.net -e WEBSITE_INSTANCE_ID=8da8a02a13a3cdde53ad6aafcd4eb717ca00dd6bc65ff07378d74a0cd859e1c0 -e HTTP_LOGGING_ENABLED=1 myazurefunctionendpoint.azurecr.io/mobile/myazurefunctionfolder:20200510.1  

2020-05-10 11:20:41.614 INFO  - Starting container for site
2020-05-10 11:20:41.615 INFO  - docker run -d -p 7109:8081 --name myazurefunctionfolder_8_08a93355_middleware -e WEBSITE_CORS_ALLOWED_ORIGINS=https://functions.azure.com,https://functions-staging.azure.com,https://functions-next.azure.com -e WEBSITE_CORS_SUPPORT_CREDENTIALS=False -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=myazurefunctionfolder -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=myazurefunctionfolder.azurewebsites.net -e WEBSITE_INSTANCE_ID=8da8a02a13a3cdde53ad6aafcd4eb717ca00dd6bc65ff07378d74a0cd859e1c0 -e HTTP_LOGGING_ENABLED=1 appsvc/middleware:2001061754 /Host.ListenUrl=http://0.0.0.0:8081 /Host.DestinationHostUrl=http://172.16.1.3:80 /Host.UseFileLogging=true 

2020-05-10 11:20:46.733 INFO  - Initiating warmup request to container myazurefunctionfolder_8_08a93355 for site myazurefunctionfolder
2020-05-10 11:21:02.494 INFO  - Waiting for response to warmup request for container myazurefunctionfolder_8_08a93355. Elapsed time = 15.7612638 sec
2020-05-10 11:21:16.882 INFO  - Container myazurefunctionfolder_8_08a93355 for site myazurefunctionfolder initialized successfully and is ready to serve requests.
2020-05-10 11:21:16.891 INFO  - Initiating warmup request to container myazurefunctionfolder_8_08a93355_middleware for site myazurefunctionfolder
2020-05-10 11:21:18.256 INFO  - Container myazurefunctionfolder_8_08a93355_middleware for site myazurefunctionfolder initialized successfully and is ready to serve requests.
2020_05_10_RD501AC582A899_default_docker.log:
2020-05-10T11:20:50.028672036Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Script.ChangeAnalysis.BlobChangeAnalysisStateProvider[0]
2020-05-10T11:20:50.031226105Z       Last analysis flag value '2020-05-09T23:53:16.4731910+00:00'.
2020-05-10T11:20:50.291657401Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Script.ChangeAnalysis.ChangeAnalysisService[0]
2020-05-10T11:20:50.291850999Z       Skipping breaking change analysis.

2020-05-10T11:21:12.339552452Z [40m[32minfo[39m[22m[49m: Host.Triggers.Warmup[0]
2020-05-10T11:21:12.339591252Z       Initializing Warmup Extension.
2020-05-10T11:21:13.581571261Z [40m[32minfo[39m[22m[49m: Host.Startup[503]
2020-05-10T11:21:13.581610761Z       Initializing Host. OperationId: '04df8392-1653-4549-a89a-cfe29851ceb6'.
2020-05-10T11:21:13.602683110Z [40m[32minfo[39m[22m[49m: Host.Startup[504]
2020-05-10T11:21:13.602699410Z       Host initialization: ConsecutiveErrors=0, StartupCount=1, OperationId=04df8392-1653-4549-a89a-cfe29851ceb6
2020-05-10T11:21:13.776183144Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
2020-05-10T11:21:13.776221943Z       ApplicationInsightsLoggerOptions
2020-05-10T11:21:13.776228243Z       {
2020-05-10T11:21:13.776231943Z         "SamplingSettings": {
2020-05-10T11:21:13.776235843Z           "EvaluationInterval": "00:00:15",
2020-05-10T11:21:13.776239743Z           "InitialSamplingPercentage": 100.0,
2020-05-10T11:21:13.783177961Z           "MaxSamplingPercentage": 100.0,
2020-05-10T11:21:13.783190860Z           "MaxTelemetryItemsPerSecond": 20.0,
2020-05-10T11:21:13.783196060Z           "MinSamplingPercentage": 0.1,
2020-05-10T11:21:13.783199560Z           "MovingAverageRatio": 0.25,
2020-05-10T11:21:13.783203160Z           "SamplingPercentageDecreaseTimeout": "00:02:00",
2020-05-10T11:21:13.783206760Z           "SamplingPercentageIncreaseTimeout": "00:15:00"
2020-05-10T11:21:13.783210460Z         },
2020-05-10T11:21:13.783213660Z         "SamplingExcludedTypes": null,
2020-05-10T11:21:13.783217060Z         "SamplingIncludedTypes": null,
2020-05-10T11:21:13.783220260Z         "SnapshotConfiguration": null,
2020-05-10T11:21:13.783223460Z         "EnablePerformanceCountersCollection": true,
2020-05-10T11:21:13.783226860Z         "HttpAutoCollectionOptions": {
2020-05-10T11:21:13.783238260Z           "EnableHttpTriggerExtendedInfoCollection": true,
2020-05-10T11:21:13.783241660Z           "EnableW3CDistributedTracing": true,
2020-05-10T11:21:13.783244960Z           "EnableResponseHeaderInjection": true
2020-05-10T11:21:13.783248360Z         },
2020-05-10T11:21:13.783270959Z         "LiveMetricsInitializationDelay": "00:00:15",
2020-05-10T11:21:13.783274659Z         "EnableLiveMetrics": true,
2020-05-10T11:21:13.783278159Z         "EnableDependencyTracking": true
2020-05-10T11:21:13.783281959Z       }
2020-05-10T11:21:13.793179241Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
2020-05-10T11:21:13.793194241Z       LoggerFilterOptions
2020-05-10T11:21:13.793198841Z       {
2020-05-10T11:21:13.793209541Z         "MinLevel": "None",
2020-05-10T11:21:13.793213241Z         "Rules": [
2020-05-10T11:21:13.793216641Z           {
2020-05-10T11:21:13.793219741Z             "ProviderName": null,
2020-05-10T11:21:13.793222941Z             "CategoryName": null,
2020-05-10T11:21:13.793616636Z             "LogLevel": null,
2020-05-10T11:21:13.793626936Z             "Filter": "<AddFilter>b__0"
2020-05-10T11:21:13.793631436Z           },
2020-05-10T11:21:13.793634836Z           {
2020-05-10T11:21:13.793638236Z             "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
2020-05-10T11:21:13.793642036Z             "CategoryName": null,
2020-05-10T11:21:13.793645536Z             "LogLevel": "None",
2020-05-10T11:21:13.793668236Z             "Filter": null
2020-05-10T11:21:13.793671936Z           },
2020-05-10T11:21:13.793675336Z           {
2020-05-10T11:21:13.793678835Z             "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
2020-05-10T11:21:13.793682635Z             "CategoryName": null,
2020-05-10T11:21:13.793686235Z             "LogLevel": null,
2020-05-10T11:21:13.793689835Z             "Filter": "<AddFilter>b__0"
2020-05-10T11:21:13.793714535Z           },
2020-05-10T11:21:13.793717835Z           {
2020-05-10T11:21:13.793721335Z             "ProviderName": "Microsoft.Azure.WebJobs.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider",
2020-05-10T11:21:13.793742835Z             "CategoryName": null,
2020-05-10T11:21:13.793746535Z             "LogLevel": "Trace",
2020-05-10T11:21:13.793769834Z             "Filter": null
2020-05-10T11:21:13.793773834Z           }
2020-05-10T11:21:13.793777534Z         ]
2020-05-10T11:21:13.793781234Z       }
2020-05-10T11:21:13.794979520Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
2020-05-10T11:21:13.794992920Z       LoggerFilterOptions
2020-05-10T11:21:13.794997120Z       {
2020-05-10T11:21:13.795000320Z         "MinLevel": "None",
2020-05-10T11:21:13.795003820Z         "Rules": [
2020-05-10T11:21:13.795007220Z           {
2020-05-10T11:21:13.795010420Z             "ProviderName": null,
2020-05-10T11:21:13.795013820Z             "CategoryName": null,
2020-05-10T11:21:13.795385015Z             "LogLevel": null,
2020-05-10T11:21:13.795404015Z             "Filter": "<AddFilter>b__0"
2020-05-10T11:21:13.795408915Z           },
2020-05-10T11:21:13.795418615Z           {
2020-05-10T11:21:13.795422415Z             "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
2020-05-10T11:21:13.795426215Z             "CategoryName": null,
2020-05-10T11:21:13.795429615Z             "LogLevel": "None",
2020-05-10T11:21:13.795432915Z             "Filter": null
2020-05-10T11:21:13.795436415Z           },
2020-05-10T11:21:13.795439614Z           {
2020-05-10T11:21:13.795442814Z             "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
2020-05-10T11:21:13.795446414Z             "CategoryName": null,
2020-05-10T11:21:13.795449814Z             "LogLevel": null,
2020-05-10T11:21:13.795453114Z             "Filter": "<AddFilter>b__0"
2020-05-10T11:21:13.795456614Z           },
2020-05-10T11:21:13.795459814Z           {
2020-05-10T11:21:13.795463114Z             "ProviderName": "Microsoft.Azure.WebJobs.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider",
2020-05-10T11:21:13.795466614Z             "CategoryName": null,
2020-05-10T11:21:13.795469914Z             "LogLevel": "Trace",
2020-05-10T11:21:13.795473314Z             "Filter": null
2020-05-10T11:21:13.795476814Z           }
2020-05-10T11:21:13.795480014Z         ]
2020-05-10T11:21:13.795483214Z       }
2020-05-10T11:21:13.802636929Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
2020-05-10T11:21:13.802651229Z       FunctionResultAggregatorOptions
2020-05-10T11:21:13.802655629Z       {
2020-05-10T11:21:13.802659029Z         "BatchSize": 1000,
2020-05-10T11:21:13.802662528Z         "FlushTimeout": "00:00:30",
2020-05-10T11:21:13.802666128Z         "IsEnabled": true
2020-05-10T11:21:13.802669428Z       }
2020-05-10T11:21:13.805165699Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
2020-05-10T11:21:13.805181898Z       SingletonOptions
2020-05-10T11:21:13.805187198Z       {
2020-05-10T11:21:13.805191198Z         "LockPeriod": "00:00:15",
2020-05-10T11:21:13.805195398Z         "ListenerLockPeriod": "00:01:00",
2020-05-10T11:21:13.805614293Z         "LockAcquisitionTimeout": "10675199.02:48:05.4775807",
2020-05-10T11:21:13.805624993Z         "LockAcquisitionPollingInterval": "00:00:05",
2020-05-10T11:21:13.805629393Z         "ListenerLockRecoveryPollingInterval": "00:01:00"
2020-05-10T11:21:13.805633393Z       }
2020-05-10T11:21:13.812751908Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
2020-05-10T11:21:13.812774608Z       HttpOptions
2020-05-10T11:21:13.812780508Z       {
2020-05-10T11:21:13.812784508Z         "DynamicThrottlesEnabled": false,
2020-05-10T11:21:13.812788608Z         "MaxConcurrentRequests": -1,
2020-05-10T11:21:13.812792608Z         "MaxOutstandingRequests": -1,
2020-05-10T11:21:13.813337301Z         "RoutePrefix": "api"
2020-05-10T11:21:13.813366201Z       }
2020-05-10T11:21:13.843389543Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Hosting.JobHostService[0]
2020-05-10T11:21:13.843424743Z       Starting JobHost
2020-05-10T11:21:13.884952349Z [40m[32minfo[39m[22m[49m: Host.Startup[401]
2020-05-10T11:21:13.885667840Z       Starting Host (HostId=myazurefunctionfolder, InstanceId=a8213304-1777-4fb6-bc2d-f80e6b2bee97, Version=3.0.13113, ProcessId=1, AppDomainId=1, InDebugMode=False, InDiagnosticMode=False, FunctionsExtensionVersion=~3)
2020-05-10T11:21:13.912127225Z [40m[32minfo[39m[22m[49m: Host.Startup[314]
2020-05-10T11:21:13.912142725Z       Loading functions metadata
2020-05-10T11:21:14.081233911Z [40m[32minfo[39m[22m[49m: Host.Startup[315]
2020-05-10T11:21:14.081272511Z       0 functions loaded
2020-05-10T11:21:14.155195930Z [40m[32minfo[39m[22m[49m: Host.Startup[0]
2020-05-10T11:21:14.155225030Z       Generating 0 job function(s)
2020-05-10T11:21:14.258576699Z [40m[1m[33mwarn[39m[22m[49m: Host.Startup[0]
2020-05-10T11:21:14.259122493Z       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.).
2020-05-10T11:21:14.286182370Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Script.WebHost.WebScriptHostHttpRoutesManager[0]
2020-05-10T11:21:14.286203070Z       Initializing function HTTP routes
2020-05-10T11:21:14.286208270Z       No HTTP routes mapped
2020-05-10T11:21:14.286211970Z       
2020-05-10T11:21:14.304709550Z [40m[32minfo[39m[22m[49m: Host.Startup[412]
2020-05-10T11:21:14.304724350Z       Host initialized (394ms)
2020-05-10T11:21:14.335396884Z [40m[32minfo[39m[22m[49m: Host.Startup[413]
2020-05-10T11:21:14.335417684Z       Host started (442ms)
2020-05-10T11:21:14.336352973Z [40m[32minfo[39m[22m[49m: Host.Startup[0]
2020-05-10T11:21:14.343789484Z       Job host started
2020-05-10T11:21:14.547358360Z Hosting environment: Production
2020-05-10T11:21:14.548308349Z Content root path: /
2020-05-10T11:21:14.548820443Z Now listening on: http://[::]:80
2020-05-10T11:21:14.548834343Z Application started. Press Ctrl+C to shut down.
2020-05-10T11:21:19.822115356Z [40m[32minfo[39m[22m[49m: Host.General[316]
2020-05-10T11:21:19.822147156Z       Host lock lease acquired by instance ID '8da8a02a13a3cdde53ad6aafcd4eb717'.

2020-05-10T11:22:14.362743624Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Script.ChangeAnalysis.BlobChangeAnalysisStateProvider[0]
2020-05-10T11:22:14.362788823Z       Last analysis flag value '2020-05-09T23:53:16.4731910+00:00'.
2020-05-10T11:22:14.367496867Z [40m[32minfo[39m[22m[49m: Microsoft.Azure.WebJobs.Script.ChangeAnalysis.ChangeAnalysisService[0]
2020-05-10T11:22:14.367512067Z       Skipping breaking change analysis.

2020-05-10T11:35:44.307018064Z [40m[32minfo[39m[22m[49m: Host.Controllers.Host[0]
2020-05-10T11:35:44.309602433Z       Host Status: {
2020-05-10T11:35:44.309614333Z         "id": "myazurefunctionfolder",
2020-05-10T11:35:44.309619333Z         "state": "Running",
2020-05-10T11:35:44.309623733Z         "version": "3.0.13113",
2020-05-10T11:35:44.309628533Z         "versionDetails": "3.0.13113 Commit hash: 0cf47580569246787259ef2a29624cf9e8ce61b0",
2020-05-10T11:35:44.309633133Z         "processUptime": 908010
2020-05-10T11:35:44.309637533Z       }

2020-05-10T12:05:37.146645952Z [40m[32minfo[39m[22m[49m: Host.Controllers.Host[0]
2020-05-10T12:05:37.147571141Z       Host Status: {
2020-05-10T12:05:37.147582641Z         "id": "myazurefunctionfolder",
2020-05-10T12:05:37.147587441Z         "state": "Running",
2020-05-10T12:05:37.147591640Z         "version": "3.0.13113",
2020-05-10T12:05:37.147597440Z         "versionDetails": "3.0.13113 Commit hash: 0cf47580569246787259ef2a29624cf9e8ce61b0",
2020-05-10T12:05:37.147601940Z         "processUptime": 2700861
2020-05-10T12:05:37.147606140Z       }

救命啊!)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-13 12:14:53

对于任何有同样问题的人:最后一个码头是:

代码语言:javascript
复制
FROM mcr.microsoft.com/azure-functions/dotnet:3.0-appservice AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["MyFunctionFolder/MyFunctionFolder.csproj", "MyFunctionFolder/"]
RUN dotnet restore "MyFunctionFolder/MyFunctionFolder.csproj"
COPY . .
WORKDIR "/src/MyFunctionFolder"
RUN dotnet build "MyFunctionFolder.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "MyFunctionFolder.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /home/site/wwwroot
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/home/site/wwwroot

对我来说,问题(可能是根本原因)是函数应用程序的应用程序设置之一。

WEBSITE_RUN_FROM_PACKAGE

正因为如此,这是行不通的。一旦我删除了这个应用程序设置-它正确地工作:)

我希望这能节省我找到这个的时间。我只想说,我没有创建这个设置(我不知道它是如何“来”的)

我非常感谢Azure支持团队帮助我找到这个问题;)

票数 1
EN

Stack Overflow用户

发布于 2021-01-15 20:02:09

因为容器与Azure、DevOps管道和/或terraform脚本有关。发布管道任务对于运行时有一个下拉列表,其中只有".NET“和"JavaScript”选项。".NET“的结果是2.0映像(即使使用v3函数,也已经在2021年)。

但是下拉列表实际上是一个组合框,您可以在这里输入纯文本。如果您选择使用docker,则可以提供如下格式:

DOCKER|mcr.microsoft.com/azure-functions/dotnet:3.0

这样就可以覆盖默认行为。根据其他答案,您可以创建自己的映像并部署到,而不是从那里提取映像(使用DevOps服务主体已在ACR上读取),并根据自己的映像创建函数。

设置重写site_config字段"linux_fx_version“。如果您不使用DevOps发布管道,而是使用terraform创建函数应用程序并与其他任务一起部署,那么这将是脚本中的设置(这不是一个完整的运行示例,它只是说明了设置部分):

代码语言:javascript
复制
resource "azurerm_function_app" "app" {
  name                       = local.function_app_name
  location                   = var.resource_group_location
  resource_group_name        = var.resource_group_name
  app_service_plan_id        = var.app_service_plan_id
  storage_account_name       = var.storage_account_name
  storage_account_access_key = var.storage_account_access_key
  version                    = "~3"
  os_type                    = "linux"
  site_config {
    always_on                 = true
    use_32_bit_worker_process = false
    scm_type                  = "None"
    # the value in the next field will be overwritten by Release Pipeline setting "Runtime stack"
    # It's here just for the purpose of documentation. Please, don't remove, it was hard to figure out.
    linux_fx_version          = "DOCKER|mcr.microsoft.com/azure-functions/dotnet:3.0"
    websockets_enabled        = false
  }
  app_settings = {
    FUNCTIONS_WORKER_RUNTIME           = "dotnet"
    FUNCTION_APP_EDIT_MODE             = "readonly"
    AzureWebJobsStorage                = var.storage_account_connection
    AzureWebJobsDashboard              = var.storage_account_connection
    https_only                         = true
    WEBSITE_RUN_FROM_PACKAGE           = 1
    WEBSITE_ENABLE_SYNC_UPDATE_SITE    = true
    SCM_DO_BUILD_DURING_DEPLOYMENT     = "False"
    WEBSITE_HTTPLOGGING_RETENTION_DAYS = 7
  }
  connection_string {
    name  = var.storage_account_name
    type  = "Custom"
    value = var.storage_account_connection
  }
  identity {
    type = "SystemAssigned"
  }

  tags = merge(var.tags)
}

我阅读了大量关于运行时堆栈的文档,发现它要么具有误导性,要么不完整,要么过时(特别是与.NET 5一起使用)。这就是为什么我试图在这里记录它以供进一步参考,而不是用来回答这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61711756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档