Docker 容器中的 Azure 函数 运行 内部有不同的文件

Azure Function running from Docker Container has different files inside

如下图所示,本地 docker 容器的内容与推送到 Azure Function App 的内容不匹配。我正在使用 Kudu 探索 azure 函数应用程序,我正在使用 docker 运行 与本地容器交互。

这是个问题,因为我有一个用 DllImport 导入的外部库,所以无论我把它放在哪里,代码都找不到实际的库文件。

这是什么原因造成的,解决方法是什么?

这是我的 Dockerfile 的最后一层:

FROM mcr.microsoft.com/azure-functions/dotnet:2.0
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

COPY --from=installer ["/home/site/wwwroot", "/home/site/wwwroot"]
COPY --from=compile_engine ["/app/tmp/src/libml_inference_engine.so", "/azure-functions-host"]
COPY --from=compile_engine ["/app/tmp/src/libml_inference_engine.so", "/bin"]
COPY --from=compile_engine ["/app/tmp/src/libml_inference_engine.so", "/home/site/wwwroot"]

当您从自定义 docker 图像创建函数应用程序时,容器内的路径 /home/site/wwwroot 与 kudu 中的路径 /home/site/wwwroot 不同。 kudu 和自定义映像中的容器之间有两个不同的容器。所以你不能在两条相同的路径上看到相同的东西。

解决方法是可以将环境变量WEBSITES_ENABLE_APP_SERVICE_STORAGE设置为true。然后该函数将使用路径 /home/site/wwwroot 覆盖自定义容器内的相同路径。所以你会在两个地方看到同样的东西。它还显示了门户中该路径的所有内容: