Azure存储模拟器不适用于Azure功能docker run

我正在尝试使用Docker运行计时器触发天蓝色函数示例。在调试和发布模式下,它都可以在Visual Studio中正常工作。但是当使用docker

docker run -d -p 8080:80 testdockercors

应用程序启动,并显示以下消息,但我的计时器触发azure函数未运行。

Hosting environment: Production
Content root path: /app
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down..

但是从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"

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

ssshhhccc 回答:Azure存储模拟器不适用于Azure功能docker run

我通过如下更改AzureWebJobsStorage的值来解决此问题,将DevelopmentStorageProxyUri = http://host.docker.internal附加到环境可以解决问题。

ENV AzureWebJobsStorage="UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://host.docker.internal"

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

的更多信息

这在Linux虚拟机中不起作用

,

我可以确认使用:

ENV AzureWebJobsStorage="UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://host.docker.internal"

也适用于Python运行时(尤其是mcr.microsoft.com/azure-functions/python:3.0-python3.7)。

实际上,这可以解析为在运行docker运行时的主机上运行的azurite端点(在我的情况下是macOS)。请注意,这并不意味着如果您在容器中运行azurite就会起作用。

本文链接:https://www.f2er.com/2319573.html

大家都在问