Azure 存储模拟器无法与 azure 函数 docker run 配合使用

Kar*_* VK 4 azure azure-storage-emulator docker azure-functions azure-function-app

我正在尝试使用 Docker 运行我的计时器触发器 azure 函数示例。它在 Visual Studio 中的调试和发布模式下都运行良好。但是当使用docker时

docker run -d -p 8080:80 testdockercors

应用程序启动并显示以下消息,但我的计时器触发器天蓝色功能未运行。

Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down..
Run Code Online (Sandbox Code Playgroud)

但从 Visual Studio 运行时,计时器触发器工作正常。请找到我的 docker 文件。

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

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV AzureWebJobsScriptRoot=/app
ENV AzureWebJobsStorage="UseDevelopmentStorage=true"
Run Code Online (Sandbox Code Playgroud)

当我将环境AzureWebJobsStorage值更改为现有的 azure 存储连接字符串时,它也可以在 docker 中运行。但我想使用 docker 的一部分存储,而不是 azure 中可用的存储。

Kar*_* VK 7

我通过更改以下值解决了这个问题AzureWebJobsStorage,将 DevelopmentStorageProxyUri=http://host.docker.internal 附加到环境中就可以了。

ENV AzureWebJobsStorage="UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://host.docker.internal"
Run Code Online (Sandbox Code Playgroud)

您可以阅读有关@的更多信息https://www.maneu.net/blog/use-local-storage-emulator-remote-container/

这在 Linux 虚拟机中不起作用