当前位置: 首页 > 知识库问答 >
问题:

docker compose在本地运行Azure函数

孙俊彦
2023-03-14

我们正在构建一个系统,一些客户将在Azure中运行,一些客户将通过docker-compose在他们自己的硬件上在Docker中运行。我们的微服务基于Azure Functions。

我已经编写了一个docker compose文件来设置各种图像(网站、Azure函数和RabbitMQ)

docker compose如下所示(简化):

version: "3"
services:
  abmicroservice:
    build:
       context: ./AbMicroservice
  depends_on:
    - rabbitmq

docker-comuse启动时,我在Azure Function项目启动时收到此错误:

abmicroservice_1 |未找到工作职能。尝试公开您的工作类和方法。如果使用的是绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保已在启动代码(例如生成器)中调用了扩展的注册方法。AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() 等)。

但是,当我使用func.exe工具或Visual Studio Debug运行相同的Azure Function时,它运行正常。

我猜问题出在我的各种主持人身上。json等以及docker-compose.yml中的设置。

我的函数只是一个hello world测试,在Visual Studio 2019运行时运行得非常好:

public static class TriggerFunction
{
    [FunctionName("TriggerFunction")]
    public static void Run(
        [RabbitMQTrigger("hello")] string message,
        ILogger log)
    {
        log.LogInformation($"************* Message received from RabbitMQ trigger: {message}");
    }
}

共有1个答案

吕琪
2023-03-14

很少有事情可以解决它:

>

  • 检查连接字符串

    确保连接字符串作为 env 变量提供给 docker(查看 function.json,“connection”的值应该是带有连接字符串的 env 变量的名称)

     {
    "scriptFile": "__init__.py",
    "bindings": [
     {
       "name": "msg",
       "type": "serviceBusTrigger",
       "direction": "in",
       "queueName": "nameOfTheQue",
       "connection": "connectionVariable"
     }
    ]
    }
    

    这意味着您的 docker 应该有一个 env 变量 “connectionVariable” 和连接字符串(在本例中为服务总线)

  •  类似资料:
    • 问题内容: 这已经使我烦恼了几天,但我解决不了。 我遵循了一个在线教程,该教程向您展示了如何使用实体框架中的模型优先方法连接和使用Azure数据库。这样,您必须将数据库迁移设置为在将网站发布到Azure时更新Azure数据库。 我已经在Azure上创建了一个数据库,所以我认为我会采用使用数据库优先模型的方法(而且它不需要设置迁移),并使用Entity Framework向导来创建我的模型。一切运行

    • 我正在尝试在本地运行一个azure队列触发函数。我安装了Azure Storage Emulator并运行命令“AzureStorageEmulator.exe init”以在“(localdb)\mssqllocaldb”服务器上创建“AzureStorageEmulatorDB59”数据库。 在具有队列触发器函数的azure functions项目中,我有一个local.settings.js

    • 我有Azure功能,并试图在本地启动,但启动后命令行显示和隐藏不到1秒。我试着在截图上抓住它: 看起来没有正确的启动参数。 my local.settings.json: 我的csproj文件是: 另外,我设置了“可执行文件”在调试属性窗口和完整路径上启动: 因为没有它,azure函数无法在本地启动,出现错误: 我能在哪里检查它?

    • 我在C#中设置了一个非常简单的Azure函数来响应。当我按照Microsoft Azure指令在本地运行该函数时,我得到的只是一个空的404响应。 我用的是Visual Studio 2017 v15.3预览版,安装了Azure Function Tools扩展。这是我的Azure函数的代码: 当我在本地运行时(通过右键单击VS项目并进行调试) 但是,当我获取或POST到上述URL(将Conten

    • 我有一个功能。Net标准2.0: 根据本文:https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local部分"非HTTP触发函数" “对于HTTP触发器和Webhook以外的所有类型的函数,您都可以通过调用管理终结点在本地测试您的函数。在本地服务器上使用HTTP POST请求调用此终结点会触发该函数。您可以选择

    • 您好,我在Azure门户中创建了一个函数并看到队列数据出队。 我在我的计算机上安装了一个CLI,当我运行项目时,它将显示一个func。exe命令提示符。我在local.settings.json中添加了如下连接字符串: 当我在门户中向队列中添加消息时,应用程序未收到该消息。我需要更新哪些其他设置。