簡體   English   中英

docker-compose 在本地運行 Azure 功能

[英]docker-compose to run Azure Functions locally

我們正在構建一個系統,一些客戶將在 Azure 中運行,一些客戶將通過 docker-compose 在他們自己的硬件上運行在 Docker 中。 我們的微服務基於 Azure 函數。

我編寫了一個 docker-compose 文件來設置各種圖像(網站,Azure 函數和 RabbitMQ)

docker-compose 看起來像這樣(簡化):

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

當 docker-compose 啟動時,當 Azure Function 項目啟動時出現此錯誤:

abmicroservice_1 | 未找到工作職能。 嘗試公開您的工作類別和方法。 如果您使用綁定擴展(例如 Azure 存儲、ServiceBus、計時器等),請確保您已在啟動代碼中調用了擴展的注冊方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。

但是當我使用 func.exe 工具或 Visual Studio Debug 運行相同的 Azure Function 時,它運行良好。

我猜這個問題是我的各種 host.json 等和 docker-compose.yml 中的設置

我的 Function 只是一個 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}");
    }
}

很少有東西可以解決它:

  • 檢查連接字符串

  • 確保將連接字符串作為環境變量提供給 docker(查看 function.json 並且“連接字符串”的值應該是連接字符串的名稱)

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

這意味着您的 docker 應該有一個帶有連接字符串的環境變量“connectionVariable”(在本例中為服務總線)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM