使用Rancher Desktop在本地运行Azure Functions(Docker版本)

使用Rancher Desktop在本地运行Azure functions(Docker版)

目标

我想试试在使用Azure Functions的WebApi上开发源代码,即使没有Azure账户(免费),我在本地的Mac Docker环境中成功运行了它。

环境

我們將使用Mac book、Rancher Desktop和Python(版本管理使用pyenv)。

准备

前提条件

我安装了pyenv,并且Rancher Desktop(Docker)正在运行。

Python版本设置

我們將使用Python創建Web API,因此需要準備Python。
鑑於Python支援3.7以上版本,因此我們選擇了3.9版本。

#まずはインストール可能なバージョンの確認
$ pyenv install --list
#今回は、3.9.13 を使用します。
$ pyenc install 3.9.13
#3.9.13に設定する
$ pyenv global 3.9.13
#バージョン確認
$ python --version
#3.9.13に設定されてること確認

安装Azure函数核心工具

为了在本地计算机的终端上开发Azure Functions,需要安装Azure Function Core Tools并使用func命令。

按照官方网站的指示在下面进行安装。

$ brew tap azure/functions
$ brew install azure-functions-core-tools@4
#インストールの確認
$func --version
#今回は 4.0.5148がインストールされました。

使用Docker容器进行操作验证。

 

几乎按照这个方式进行了尝试。
首先,在本地环境下创建了一个用于测试的目录,然后逐步执行命令。

创建一个函数

func init --docker

使用docker选项将创建docker文件。
被告知选择运行时,选择Python 4版本。

Select a number for worker runtime:
1. dotnet
2. dotnet (isolated process)
3. node
4. python
5. powershell
6. custom
Choose option:

选择选项:4
将自动创建Dockerfile等文件。Dockerfile将使用python appservice的镜像,并将当前目录复制到wwwroot目录中。

我们将添加新的功能。模板选择HTTP触发器,创建基本的Web API。
– 设置–authlevel为anonymous,将认证级别设置为函数,无需访问密钥。

func new --name HttpExample --authlevel anonymous

由于可以选择以下模板,请输入选项:9。

Select a number for template:
1. Azure Blob Storage trigger
2. Azure Cosmos DB trigger
3. Durable Functions activity
4. Durable Functions entity
5. Durable Functions HTTP starter
6. Durable Functions orchestrator
7. Azure Event Grid trigger
8. Azure Event Hub trigger
9. HTTP trigger
10. Kafka output
11. Kafka trigger
12. Azure Queue Storage trigger
13. RabbitMQ trigger
14. Azure Service Bus Queue trigger
15. Azure Service Bus Topic trigger
16. Timer trigger
Choose option:

在创建HttpExample目录时,会生成一个代码,其中__init__.py在请求name参数时会响应Hello {name}。

    if name:
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")

另外,请确认在HttpExample/function.json中设置了–authlevel anonymous选项,以将authLevel设置为Anonymous。如果这是默认函数的设置,可能会导致401(未授权)错误。

创建Docker镜像并进行操作确认

首先,让我们运行Rancher桌面版。
使用以下命令创建Docker镜像。

$ docker build --tag azurefunctionsimage:v1.0.0 .

确认后,图像将成功创建。

docker images
REPOSITORY                                TAG                    IMAGE ID       CREATED              SIZE
azurefunctionsimage                       v1.0.0                 53246a83b58d   About a minute ago   1.49GB

然后,我将继续运行生成的图像。

docker run -p 8080:80 -it azurefunctionsimage:v1.0.0

当从浏览器中访问http://localhost:8080/api/HttpExample?name=Functions时,
会显示“Hello, Functions. This HTTP triggered function executed successfully.”,验证了本地环境的正常运行。
这样一来,似乎可以创建使用多个容器的微服务环境,甚至在本地环境中实现它们。

接下来,我想尝试在Kubernetes上进行运行测试。

广告
将在 10 秒后关闭
bannerAds