[英]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.