你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 中部署使用 PostgreSQL 的 Python (Flask) Web 应用

在本教程中,你将使用 Azure Database for PostgreSQL 关系数据库服务将数据驱动的 Python Web 应用部署到 Azure 应用服务。 Azure 应用服务支持 Linux 服务器环境中的 Python。 本文使用 Flask 应用。 替代方法包括 DjangoFastAPI 教程

关系图显示了 Azure 中使用 PostgreSQL 数据库的应用服务的体系结构。

本教程介绍如何执行下列操作:

  • 创建默认安全的应用服务、PostgreSQL 和 Redis 缓存体系结构。
  • 使用托管标识和 Key Vault 引用来保护连接机密。
  • 将示例 Python 应用从 GitHub 存储库部署到应用服务。
  • 在应用程序代码中访问应用服务连接字符串和应用设置。
  • 进行更新并重新部署应用程序代码。
  • 通过运行数据库迁移生成数据库架构。
  • 从 Azure 流式传输诊断日志。
  • 在 Azure 门户中管理应用。
  • 使用 Azure Developer CLI 预配同一体系结构并进行部署。
  • 使用 GitHub Codespaces 和 GitHub Copilot 优化开发工作流。

先决条件

  • 具有活动订阅的 Azure 帐户。 如果没有 Azure 帐户,可以免费创建一个
  • 一个 GitHub 帐户。 也可以 免费获取一个
  • Python 与 Flask 开发的知识。
  • (可选)若要试用 GitHub Copilot,请创建一个 GitHub Copilot 帐户。 有 30 天免费试用版可用。

跳到末尾

如果只想查看在 Azure 中运行的本教程中的示例应用,请在 Azure Cloud Shell 中运行以下命令,并按照提示作:

mkdir msdocs-flask-postgresql-sample-app
cd msdocs-flask-postgresql-sample-app
azd init --template msdocs-flask-postgresql-sample-app
azd up

运行示例

首先,设置示例数据驱动应用。 为方便起见, 示例存储库 包括 开发容器 配置。 开发容器包含开发应用程序所需的所有内容。 它包括示例应用程序所需的数据库、缓存和所有环境变量。 开发容器可以在 GitHub codespace 中运行,因此可以使用 Web 浏览器在任何计算机上运行示例。

注意

如果您正在跟随本教程并使用自己的应用程序,请查看 README.md 中的 requirements.txt 文件描述,以了解您需要哪些包。

步骤 1:在新浏览器窗口中:

  1. 登录到 GitHub 帐户。
  2. 导航到 https://github.com/Azure-Samples/msdocs-flask-postgresql-sample-app/fork
  3. 取消选择“仅复制主分支”。 你需要所有分支。
  4. 选择“创建分支”。

步骤 2:在 GitHub 分支中:

  1. 选择main>starter-no-infra作为起始分支。 此分支仅包含没有与 Azure 相关的文件或配置的示例项目。
  2. 选择 Code。 在 codespaces 选项卡中,选择 starter-no-infra 上的“创建代码空间”。 设置代码空间需要几分钟时间。 对于存储库,它运行 pip install -r requirements.txt

步骤 3:在 codespace 终端中

  1. 使用 flask db upgrade 运行数据库迁移。
  2. 使用 flask run 运行应用。
  3. 看到通知 Your application running on port 5000 is available. 时,选择“在浏览器中打开”。 应在新的浏览器选项卡中看到该示例应用程序。若要停止应用程序,请键入 Ctrl+C

提示

可以向 GitHub Copilot 询问有关此存储库的信息。 例如:

  • @workspace 这个项目有什么用?
  • @workspace .devcontainer 文件夹有什么用?

遇到问题? 检查故障排除部分

创建应用服务和 PostgreSQL

在本部分中,将创建 Azure 资源。 本教程创建一组默认安全的资源,其中包括 App Service 和 Azure Database for PostgreSQL。 对于创建过程,需要指定:

  • Name 是 Web 应用的名称。 它用作应用的 DNS 名称的一部分。
  • “地区”,即应用在真实世界运行的地区。 它也是应用的 DNS 名称的一部分。
  • 应用的运行时堆栈。 要用于应用的 Python 版本。
  • “托管计划”,即应用的托管计划。 包含应用的功能集和缩放容量的定价层。
  • 应用的资源组。 资源组允许将应用程序的 Azure 资源分组到逻辑容器中。

登录到 Azure 门户并按照以下步骤创建 Azure 应用服务资源。

步骤 1:在 Azure 门户中:

  1. 在 Azure 门户顶部,在搜索栏中输入 Web 应用数据库
  2. “市场 ”标题下,选择标记为 “Web 应用 + 数据库”的项目。 还可以直接导航到 “创建 Web 应用 ”。

步骤 2:在“创建 Web 应用 + 数据库”页上,按下面所述填写表单。

  1. 资源组:选择“新建”并使用 msdocs-flask-postgres-tutorial 作为名称
  2. 区域:你附近的任何 Azure 区域。
  3. 名称:msdocs-python-postgres-XYZ。
  4. 运行时堆栈Python 3.14
  5. 数据库:默认已选择“PostgreSQL 灵活服务器”作为数据库引擎。 默认情况下,服务器名称和数据库名称也会设置为适当的值。
  6. 添加 Azure Cache for Redis?:否。
  7. 托管计划基本。 准备就绪后,可以纵向扩展到生产定价层。
  8. 选择“查看 + 创建”
  9. 验证完成后,选择“创建”。

步骤 3: 部署需要几分钟时间。 部署完成后,选择“ 转到资源”。 部署创建以下资源:

  • 资源组:所有已创建资源的容器。
  • 应用服务计划:为应用服务定义计算资源。 在 基本 层中,部署会创建一个 Linux 计划。
  • 应用服务:表示应用并在应用服务计划中运行。
  • 虚拟网络:与应用服务应用集成,并隔离后端网络流量。
  • 网络接口:表示专用 IP 地址,每个专用终结点各一个。
  • Azure Database for PostgreSQL 灵活服务器:只能从虚拟网络内部访问。 你的数据库和用户创建于此服务器上。
  • 专用 DNS 区域:启用虚拟网络中密钥保管库和数据库服务器的 DNS 解析。

保护连接机密

部署过程会为你生成 应用设置的连接变量。 安全最佳做法是完全将机密从应用服务中保留出来。 将机密移动到密钥保管库,并在服务连接器的帮助下将应用设置更改为 Key Vault 引用

步骤 1: 检索现有连接字符串:

  1. 在“应用服务”页的左侧菜单中,选择 “设置>环境变量”。
  2. 选择“AZURE_POSTGRESQL_CONNECTIONSTRING”
  3. “值”字段中的“添加/编辑应用程序”设置中,在字符串末尾查找 password=
  4. 复制“password=”后的密码字符串供以后使用。 此应用设置允许连接到受专用终结点保护的 Postgres 数据库。 机密直接保存在应用服务应用中,这不是最佳做法。 稍后将更改此配置。

步骤 2: 创建密钥保管库以安全管理机密:

  1. 在顶部搜索栏中,键入“密钥保管库”,然后选择市场>密钥保管库
  2. 在“资源组”中,选择“msdocs-python-postgres-tutorial”。
  3. 在“密钥保管库名称”中,键入仅包含字母和数字的名称。
  4. 在“区域”中,将其设置为资源组所在的同一位置。

步骤 3: 使用专用终结点保护密钥保管库:

  1. 选择“网络”。
  2. 取消选择“启用公共访问”
  3. 选择“创建专用终结点”。
  4. 在“资源组”中,选择“msdocs-python-postgres-tutorial”。
  5. 在对话框中,在“位置”中,选择与应用服务应用相同的位置。
  6. 在“名称”中,键入“msdocs-python-postgres-XYZVaultEndpoint”
  7. 在“虚拟网络”中,选择“msdocs-python-postgres-XYZVnet”
  8. 子网中,选择 msdocs-python-postgres-XYZSubnet
  9. 选择“确定”
  10. 选择“审核并创建”,然后选择“创建”。 等待密钥保管库部署完成。 应会看到 部署已完成

步骤 4: 配置 PostgreSQL 连接器:

  1. 在顶部搜索栏中,键入“msdocs-python-postgres”,然后选择名为“msdocs-python-postgres-XYZ”的应用服务资源
  2. 在“应用服务”页的左侧菜单中,选择 “设置>服务连接器”。 已经有一个连接器,这是由部署过程为您创建的。
  3. 选中 PostgreSQL 连接器旁边的复选框,然后选择“编辑”
  4. 在“客户端类型”中,选择“Django”。 即使你拥有 Flask 应用,PostgreSQL 服务连接器中的 Django 客户端类型也会使用多个设置单独提供数据库变量,而不是在一个连接字符串中提供。 单独的变量更易于在应用程序代码中使用,它使用 SQLAlchemy 连接到数据库。
  5. 选择身份验证
  6. 在“密码”中,粘贴你之前复制的密码。
  7. 选择“在密钥保管库中存储机密”。
  8. 在“密钥保管库连接”下,选择“创建新连接”。 “创建连接”对话框在编辑对话框顶部打开。

步骤 5: 建立 Key Vault 连接:

  1. 在密钥保管库连接的“创建连接”对话框中,在“密钥保管库”中选择之前创建的密钥保管库
  2. 选择“查看 + 创建” 。
  3. 验证完成后,选择“创建”。

步骤 6: 完成 PostgreSQL 连接器设置:

  1. 返回到“defaultConnector”编辑对话框。 在“身份验证”选项卡中,等待创建密钥保管库连接器。 创建完成后, Key Vault 连接 下拉列表会自动选择它。
  2. 选择“下一页:网络”。
  3. 选择“保存”。 等待“更新成功”通知出现

步骤 7: 验证 Key Vault 集成

  1. 在左侧菜单中,再次选择 “设置>环境变量 ”。
  2. AZURE_POSTGRESQL_PASSWORD旁边,选择显示值。 该值应为@Microsoft.KeyVault(...),表示它是密钥保管库引用。 机密现在在密钥保管库中管理。

总之,保护连接机密的过程包括:

  • 从应用服务应用的环境变量中检索连接机密。
  • 创建密钥保管库。
  • 使用系统分配的托管标识创建 Key Vault 连接。
  • 更新服务连接器以将机密存储在 Key Vault 中。

遇到问题? 检查故障排除部分


部署示例代码

在本部分中,你将使用 GitHub Actions 配置 GitHub 部署。 这是部署到应用程序服务的许多方法之一。 这是在部署过程中持续集成的好方法。 默认情况下,进入 GitHub 存储库的每个 git push 都会启动生成和部署操作。

步骤 1:在左侧菜单中,选择“部署”>“部署中心”。

步骤 2:部署中心 页中:

  1. 在“源”中,选择“GitHub”。 默认情况下,选择 GitHub Actions 作为生成提供程序。
  2. 登录到 GitHub 帐户,并按照提示授权 Azure。
  3. 在“组织”中,选择你的帐户。
  4. 在“存储库”中,选择“msdocs-flask-postgresql-sample-app”
  5. 在“分支”中,选择“starter-no-infra”。 此分支与示例应用一起使用的分支相同,没有任何与 Azure 相关的文件或配置。
  6. 对于“身份验证类型”,请选择“用户分配的标识”。
  7. 在顶部菜单中,选择“保存”。 应用服务将工作流文件提交到目录中所选的 GitHub 存储库 .github/workflows 。 默认情况下,部署中心会为工作流创建用户分配的标识,以便使用 Microsoft Entra(OIDC 身份验证)进行身份验证。 有关其他身份验证选项,请参阅 使用 GitHub Actions 部署到应用服务

步骤 3:返回示例分支的 GitHub codespace,运行 git pull origin starter-no-infra。 此命令会将新提交的工作流文件拉取到 codespace。

步骤 4(选项 1:使用 GitHub Copilot):

  1. 通过选择 “聊天 ”视图启动新的聊天会话,然后选择 +
  2. 问: @workspace应用如何连接到数据库? Copilot 可能会提供一些说明 SQLAlchemy,例如如何在 azureproject/development.pyazureproject/production.py 中配置其连接 URI。
  3. 询问 @workspace在生产模式下,我的应用在应用服务 Web 应用中运行,该应用使用 Azure 服务连接器通过 Django 客户端类型连接到 PostgreSQL 灵活服务器。我需要使用哪些环境变量名称? Copilot 可能会为你提供类似于选项 2 中的代码建议 :没有 GitHub Copilot 步骤,甚至告诉你在 azureproject/production.py 文件中进行更改。
  4. 在资源管理器中打开 azureproject/production.py,并添加代码建议。 GitHub Copilot 不会每次提供相同的响应。 响应并不总是正确的。 可能需要提出更多问题来微调其响应。 有关提示信息,请查看如何在我的代码空间中使用GitHub Copilot?

步骤 4(选项 2:不使用 GitHub Copilot):

  1. 在资源管理器中打开 azureproject/production.py
  2. 找到注释的代码(第 3-8 行),并取消注释。 此更改通过使用 AZURE_POSTGRESQL_USERAZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTAZURE_POSTGRESQL_NAME 为 SQLAlchemy 创建连接字符串。

步骤 5:

  1. 选择“源代码管理”扩展。
  2. 在文本框中,键入类似 Configure Azure database connection 的提交消息。 或者,选择 ,让 GitHub Copilot 为你生成提交消息。
  3. 选择“提交”,然后使用“是”进行确认
  4. 选择“同步更改 1”,然后使用“确定”进行确认。

步骤 6:返回到 Azure 门户中的“部署中心”页

  1. 选择 “日志”,然后选择“ 刷新 ”以查看新的部署运行。
  2. 在部署运行的日志项中,选择具有最新时间戳的“生成/部署日志”条目。

步骤 7: 你已访问 GitHub 存储库。 GitHub操作正在运行。 工作流文件定义了两个单独的阶段, 即生成部署。 等待 GitHub 运行以显示“成功”状态。 此过程大约需要 5 分钟。

遇到问题? 查看故障排除指南

生成数据库架构

在 PostgreSQL 数据库受虚拟网络保护的情况下,运行 Flask 数据库迁移的最简单方法是使用应用服务中的 Linux 容器在 SSH 会话中运行。

步骤 1: 返回 应用服务 页,在左侧菜单中,

  1. 选择“开发工具”“SSH”>
  2. 选择“转到”。

步骤 2:在 SSH 会话中,运行 flask db upgrade。 如果该命令成功,则应用服务会成功连接到数据库

提示

在 SSH 会话中,只有在 /home 中对文件进行的更改才能在应用重启后保持。 不会保留 /home 外部的更改。

遇到问题? 检查故障排除部分

浏览到应用

步骤 1:“应用服务 ”页中:

  1. 从左侧菜单中选择“概述”。
  2. 选择应用的 URL。

步骤 2:在列表中添加几家餐厅。 恭喜,你已在 Azure 应用服务中运行了一个 Web 应用,并安全连接到了 Azure Database for PostgreSQL。

流式传输诊断日志

Azure 应用服务会捕获所有控制台日志,以帮助你诊断应用程序的问题。 示例应用包含 print() 用于演示此功能的语句,如下所示。

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

步骤 1:“应用服务 ”页中:

  1. 在左侧菜单中,选择“监视”>“应用服务日志”。
  2. 在“应用程序日志记录”下,选择“文件系统”。
  3. 在顶部菜单中,选择“保存”。

步骤 2:在左侧菜单中,选择“日志流”。 将显示应用的日志,包括平台日志和容器内部的日志。

若要了解有关在 Python 应用中登录的详细信息,请参阅 为 Python 应用程序设置 Azure Monitor

清理资源

完成后,可以通过删除资源组从 Azure 订阅中删除所有资源。

步骤 1:在 Azure 门户顶部的搜索栏中:

  1. 输入资源组名称。
  2. 选择资源组。

步骤 2:在资源组页上,选择“删除资源组”。

步骤 3:

  1. 若要确认删除,请输入资源组名称。
  2. 选择“删除”。
  3. 再次使用“删除”进行确认

创建 Azure 资源并部署示例应用

在此步骤中,将创建 Azure 资源并将示例应用部署到 Linux 上的应用服务。 本教程中使用的步骤创建一组默认安全的资源,其中包括应用服务和 Azure Database for PostgreSQL。

开发容器已具有 Azure Developer CLI (AZD)。

  1. 从存储库根路径,运行 azd init

    azd init --template python-app-service-postgresql-infra
    
  2. 出现提示时,请提供以下答案:

    问题 回答
    当前的目录不为空。 是否要在此处初始化“<your-directory>”中的项目?
    你希望对这些文件执行哪些操作? 使现有文件保持不变
    输入新环境名称 键入唯一名称。 AZD 模板将此名称用作 Azure 中 Web 应用的 DNS 名称的一部分 (<app-name>-<hash>.azurewebsites.net)。 允许使用字母数字字符和下划线。
  3. 通过运行 azd auth login 命令并按照提示登录到 Azure:

    azd auth login
    
  4. 使用 azd provision 命令创建必要的 Azure 资源。 按照提示为 Azure 资源选择所需的订阅和位置。

    azd provision
    

    azd provision 命令需要大约 15 分钟才能完成。 Redis 缓存花费的时间最多。 稍后,修改代码以兼容应用服务,然后使用 azd deploy 部署更改。 在运行时,该命令提供有关预配和部署过程的消息,包括指向 Azure 中的部署的链接。

    此 AZD 模板包含使用以下 Azure 资源生成安全默认体系结构的文件(azure.yamlinfra 目录):

    • 资源组:所有已创建资源的容器。
    • 应用服务计划:为应用服务定义计算资源。 它在 基本 层中创建 Linux 计划。
    • 应用服务:表示应用并在应用服务计划中运行。
    • 虚拟网络:与应用服务应用集成,并隔离后端网络流量。
    • 专用终结点:虚拟网络中密钥保管库和 Redis 缓存的访问终结点。
    • 网络接口:表示专用 IP 地址,每个专用终结点各一个。
    • Azure Database for PostgreSQL 灵活服务器:只能从虚拟网络中访问。 你的数据库和用户创建于此服务器上。
    • 专用 DNS 区域:在虚拟网络中启用 PostgreSQL 服务器的 DNS 解析。
    • Log Analytics 工作区:充当应用日志传送的目标容器,还可以在其中查询日志。
    • Azure Cache for Redis:只能通过其专用终结点访问。
    • 密钥保管库:只能从其专用终结点后面访问。 用于管理应用服务应用的机密。

    命令第一次创建资源和部署应用程序代码后,部署的示例应用尚不起作用。 必须进行少量更改才能连接到 Azure 中的数据库。

遇到问题? 检查故障排除部分

使用数据库连接字符串

你使用的 AZD 模板已经为你生成了作为应用设置的连接变量。 它将它们输出到终端。 使用应用设置可以将连接机密保留在代码存储库之外。

  1. 在 AZD 输出中,找到设置 AZURE_POSTGRESQL_USERAZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTAZURE_POSTGRESQL_NAME。 若要保护机密安全,请仅显示设置名称。 在 AZD 输出中,它们看起来是这样的:

    App Service app has the following connection settings:
            - AZURE_POSTGRESQL_NAME
            - AZURE_POSTGRESQL_HOST
            - AZURE_POSTGRESQL_USER
            - AZURE_POSTGRESQL_PASSWORD
            - AZURE_REDIS_CONNECTIONSTRING
            - AZURE_KEYVAULT_RESOURCEENDPOINT
            - AZURE_KEYVAULT_SCOPE
    
  2. 为方便起见,AZD 模板会显示应用的应用设置页的直接链接。 找到该链接并在新的浏览器选项卡中打开它。

遇到问题? 检查故障排除部分

修改示例代码并重新部署

  1. 在 GitHub codespace 中,通过选择 “聊天 ”视图启动新的聊天会话,然后选择 +

  2. 问: @workspace应用如何连接到数据库? Copilot 可能会提供一些说明 SQLAlchemy,例如如何在 azureproject/development.pyazureproject/production.py 中配置其连接 URI。

  3. 询问 @workspace在生产模式下,我的应用在应用服务 Web 应用中运行,该应用使用 Azure 服务连接器通过 Django 客户端类型连接到 PostgreSQL 灵活服务器。我需要使用哪些环境变量名称? Copilot 可能会为你提供类似于选项 2 中的代码建议 :没有 GitHub Copilot 步骤,甚至告诉你在 azureproject/production.py 文件中进行更改。

  4. 在资源管理器中打开 azureproject/production.py,并添加代码建议

    GitHub Copilot 不会每次提供相同的响应。 响应并不总是正确的。 可能需要提出更多问题来微调其响应。 有关提示,请参阅我可以在 codespace 中使用 GitHub Copilot 做什么?

  5. 在终端中运行 azd deploy

    azd deploy
    

遇到问题? 检查故障排除部分

生成数据库架构

在 PostgreSQL 数据库受虚拟网络保护的情况下,运行 Flask 数据库迁移的最简单方法是使用应用服务中的 Linux 容器在 SSH 会话中运行。

  1. 在 AZD 输出中,找到 SSH 会话的 URL,并在浏览器中导航到该 URL。 它在输出中看起来像这样:

    Open SSH session to App Service container at: <URL>
    
  2. 在 SSH 会话中,运行 flask db upgrade。 如果该命令成功,则应用服务会成功连接到数据库

    屏幕截图显示了在 SSH shell 及其输出中运行的命令。

    注意

    只有对 /home 中文件的更改才能在应用重启之后持久保存。 不会保留 /home 外部的更改。

遇到问题? 检查故障排除部分

浏览到应用

  1. 在 AZD 输出中,找到应用的 URL 并在浏览器中导航到该 URL。 该 URL 在 AZD 输出中如下所示:

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
      - Endpoint: <URL>
    
  2. 在列表中添加几家餐厅。

    使用在 Azure 中运行的 PostgreSQL 的 Flask Web 应用的屏幕截图,其中显示了餐厅和餐厅评论。

    祝贺! 在 Azure 应用服务中运行 Web 应用,并与 Azure Database for PostgreSQL 建立安全连接。

遇到问题? 检查故障排除部分

流式传输诊断日志

Azure 应用服务可以捕获控制台日志,以帮助你诊断应用程序的问题。 AZD 模板已启用本地文件系统日志记录,并将日志发送到 Log Analytics 工作区

示例应用程序包含了 print() 语句用于演示此功能,如以下代码片段所示。

@app.route('/', methods=['GET'])
def index():
    print('Request for index page received')
    restaurants = Restaurant.query.all()
    return render_template('index.html', restaurants=restaurants)

在 AZD 输出中,找到流式传输应用服务日志的链接,并在浏览器中导航到该链接。

请参阅为 Python 应用程序设置 Azure Monitor 系列内容,详细了解 Python 应用中的日志记录。

遇到问题? 检查故障排除部分

清理资源

若要删除当前部署环境中的所有 Azure 资源,请运行 azd down 并按照提示进行操作。

azd down

故障排除

下面是在尝试完成本教程时可能会遇到的一些问题,以及解决这些问题的步骤。

无法连接到 SSH 会话

如果无法连接到 SSH 会话,则应用本身无法启动。 请查看诊断日志了解详细信息。 例如,如果看到类似 KeyError: 'AZURE_POSTGRESQL_HOST'错误,则可能意味着缺少环境变量。 也许你删除了应用设置。

运行数据库迁移时出错

如果遇到与连接数据库相关的任何错误,请检查应用设置(AZURE_POSTGRESQL_USERAZURE_POSTGRESQL_PASSWORDAZURE_POSTGRESQL_HOSTAZURE_POSTGRESQL_NAME)是否已更改或删除。 如果没有该连接字符串,则 migrate 命令将无法与数据库通信。

常见问题

这个设置要花多少钱?

所创建资源的定价如下所示:

  • 应用服务计划在“基本层”创建,可以扩展或缩减。 请参阅应用服务定价
  • PostgreSQL 灵活服务器是在最低可弹性伸缩层 Standard_B1ms 中创建的,具备最小存储容量,可灵活调整。 请参阅 Azure Database for PostgreSQL 定价
  • 除非配置额外的功能(例如对等互连),否则虚拟网络不会产生费用。 请参阅 Azure 虚拟网络定价
  • 专用 DNS 区域会产生少量费用。 请参阅 Azure DNS 定价

如何使用其他工具连接到在虚拟网络后面受保护的 PostgreSQL 服务器?

  • 要从命令行工具进行基本访问,可以从应用的 SSH 会话运行 psql
  • 若要从桌面工具进行连接,计算机必须位于虚拟网络中。 例如,它可以是连接到其中一个子网的 Azure 虚拟机,也可以是本地网络中具有与 Azure 虚拟网络 的站点到站点 VPN 连接的计算机。
  • 还可以将 Azure Cloud Shell 与虚拟网络集成。

本地应用开发如何与 GitHub Actions 配合使用?

例如,对于应用服务自动生成的工作流文件,每个 git push 文件都会启动新的生成和部署运行。 从 GitHub 存储库的本地克隆中,进行所需更新并推送到 GitHub。 例如:

git add .
git commit -m "<some-message>"
git push origin main

如何解决 GitHub Actions 部署期间的错误?

如果自动生成的 GitHub 工作流文件中某个步骤失败,请尝试修改失败的命令以生成更详细的输出。 例如,通过添加 -d 选项,你可以从 python 命令获得详细输出。 请提交并推送更改,以触发另一次应用服务部署流程。

我无权创建用户分配的标识

请参阅从部署中心设置 GitHub Actions 部署

在我的代码空间中,我可以使用 GitHub Copilot 做些什么?

你可能注意到,创建 codespace 时,GitHub Copilot 聊天视图已经存在。 为方便起见,我们在容器定义中包含 GitHub Copilot 聊天扩展。 请参阅 .devcontainer/devcontainer.json。 需要一个 GitHub Copilot 帐户。 有 30 天免费试用版可用。

下面是与 GitHub Copilot 交谈时的一些提示:

  • 在一场聊天会话中,问题和答案相辅相成。 你可以调整问题,以微调你得到的答案。
  • 默认情况下,GitHub Copilot 无法访问你存储库中的任何文件。 若要询问有关文件的问题,请首先在编辑器中打开该文件。
  • 为了让 GitHub Copilot 在准备答案时有权访问存储库中的所有文件,请在问题开头加上 @workspace。 有关详细信息,请参阅 Use the @workspace agent
  • 在聊天会话中,GitHub Copilot 可以建议更改,甚至可以(在使用 @workspace 时)建议在何处进行更改,但系统不允许它为你进行更改。 你可以自行添加建议的更改并对其进行测试。

请继续学习下一教程,了解如何使用自定义域和证书保护应用。

了解应用服务如何运行 Python 应用: