繁体   English   中英

Azure 存储模拟器不适用于 azure function Z05B6053C41A2130AFD6D6D63

[英]Azure storage emulator does not work with azure function docker run

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

docker run -d -p 8080:80 testdockercors

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

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

但是从视觉工作室运行时,计时器触发器工作正常。 请找到我的 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 中可用的存储。

我通过如下更改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 vm 中不起作用

我可以确认使用:

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

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

实际上,这解决了在运行azurite运行时的主机上运行的蓝铜矿端点(在我的情况下,它是 macOS)。 请注意,这并不意味着如果您在容器中运行azurite ,它将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM