使用容器和 Azure Functions

选择容器主机

在本文的顶部为你的容器化函数应用选择宿主环境。

如果你想要直奔主题,请参阅以下文章,其中介绍了如何创建在 Linux 容器中运行的第一个函数,并将容器注册表中的映像部署到支持的 Azure 宿主服务:

创建第一个容器化 Azure Functions

重要

本文目前介绍如何使用连接字符串连接到默认存储帐户。 为获得最佳安全性,你应改为使用 Microsoft Entra 身份验证创建基于托管标识的 Azure 存储连接。 有关详细信息,请参阅 Functions 开发人员指南

创建容器化函数应用

借助 Functions,可以轻松地将创建和维护的函数应用作为 Linux 容器进行部署和运行。

重要

创建自己的容器时,需要将容器的基础映像更新为受支持的最新基础映像。 Azure Functions 支持的基映像特定于语言,可在 Azure Functions 基础映像存储库中找到。

Functions 团队致力于发布这些基础映像的每月更新。 定期更新包括 Functions 运行时和语言的最新次要版本更新和安全修补程序。 对于容器,应定期更新 Dockerfile 中的基础映像,重新生成并重新部署容器的更新版本。

有关如何从命令行创建本地容器化函数应用并将映像发布到容器注册表的完整示例,请参阅在本地容器中创建函数应用

生成 Dockerfile

Functions 工具提供了一个 Docker 选项,该选项可使用函数代码项目生成 Dockerfile。 你可以将此文件与 Docker 配合使用,在派生自正确基础映像(语言和版本)的容器中创建函数。

创建 Dockerfile 的方式取决于创建项目的方式。

  • 如果使用 Azure Functions Core Tools 创建 Functions 项目,请在运行 --docker 命令时包括 func init 选项,如以下示例所示:

    func init --docker
    
  • 你还可以将 Dockerfile 添加到现有项目,只需在现有项目文件夹中运行 --docker-only 命令时使用 func init 选项即可,如以下示例所示:

    func init --docker-only
    

有关完整示例,请参阅在本地容器中创建函数应用

在容器中创建函数应用

有了 Functions 在代码项目中生成的 Dockerfile,你可以使用 Docker 在本地计算机上创建容器化函数应用。 以下 docker build 命令将从本地目录中的项目创建容器化函数的映像:

docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .

有关如何创建容器的示例,请参阅生成容器映像并在本地验证

更新注册表中的映像

对函数代码项目进行更改或需要更新到最新的基础映像时,你需要在本地重新生成容器,并将更新后的映像重新发布到所选的容器注册表。 以下命令将使用更新的版本号从根文件夹重新生成映像,并将其推送到注册表:

az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .

请将 <REGISTRY_NAME> 替换为你的容器注册表实例,并将 <LOGIN_SERVER> 替换为登录服务器名称。

此时,需要更新现有部署以使用新映像。 可以通过 Azure CLI 或 Azure 门户将函数应用更新为使用新映像:

az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>

在此示例中,<IMAGE_NAME> 是新映像的完整名称(包括版本)。 专用注册表要求提供用户名和密码。 请妥善存储这些凭据。

  1. Azure 门户中找到你的函数应用,然后选择左侧的“部署”“部署中心”>

  2. 在“设置”下,为“源”选择“容器注册表”,将“完整映像名称和标记”值更新为注册表中的更新版本,然后选择“保存”

指定的映像版本将部署到你的应用。

另外,应考虑启用持续部署

在 Azure Functions 中使用映像

从注册表部署函数应用容器时,Functions 会维护有关源映像的信息。