使用 FastAPI 和 Postgres 创建 GitHub Codespaces 开发环境

本文介绍如何在 GitHub Codespaces 环境中一起运行 FastAPI 和 Postgres。 Codespaces 是一种云托管的开发环境,可用于创建可配置且可重复的开发环境。

你可以在类似 Visual Studio Code 的集成开发环境(IDE)中,使用 GitHub Codespaces extension 打开该示例仓库。

或者,可以在本地克隆示例存储库。 在 Visual Studio Code 中打开项目时,可以使用开发容器通过 Dev Containers 运行该项目。 开发容器要求在本地安装 Docker Desktop 。 如果未安装 Docker,则可以使用 GitHub Codespaces 作为开发环境来运行项目。

使用 GitHub Codespaces 时,你每月可免费使用固定数量的核心时。 完成本教程需要不到一小时的核心小时数。 有关详细信息,请参阅 关于 GitHub Codespaces 的计费

还可以将此设置用作起点,并修改示例以运行其他 Python Web 框架,例如 Django 或 Flask。

在 Codespaces 中启动开发环境

本教程介绍了创建和使用 GitHub Codespaces 的多种可能方法之一。

  1. 转到示例应用存储库 https://github.com/Azure-Samples/msdocs-fastapi-postgres-codespace

    示例存储库具有使用 Postgres 数据库创建具有 FastAPI 应用的环境所需的所有配置。 可以按照为 GitHub Codespaces 设置 Python 项目中的步骤创建类似的项目。

  2. 选择代码选项卡,代码空间选项卡,然后+创建新的代码空间。

    显示如何从 GitHub 存储库创建代码空间的屏幕截图。

  3. 容器生成完成后,确认在浏览器左下角看到 Codespaces ,并查看示例存储库。

    代码空间密钥配置文件 devcontainer.jsonDockerfiledocker-compose.yml。 有关详细信息,请参阅 GitHub Codespaces 概述

    小窍门

    还可以在 Visual Studio Code 中运行 codespace。 选择浏览器左下角的 Codespaces 或 (Ctrl + Shift + P / Ctrl + Command + P),然后键入“Codespaces”。 然后在 VS Code 中选择“打开”。 此外,如果停止代码空间并返回到存储库并在 GitHub Codespaces 中再次打开它,则可以选择在 VS Code 或浏览器中打开它。

    注释

    如果 PostgreSQL 无法启动(容器崩溃),则可能是因为 PostgreSQL 18+ 与现有数据目录卷不兼容。 编辑.devcontainer/docker-compose.yaml并更改为postgres:latestpostgres:17,然后重新生成容器。 PostgreSQL 18 更改了数据目录布局,导致挂载到 /var/lib/postgresql/data 的卷与之前的版本不兼容。

  4. 选择 .env.devcontainer 文件,并创建一个名为 .env 的副本,其中包含相同的内容。

    .env 文件包含代码用于连接到数据库的环境变量。

  5. 如果终端窗口尚未打开,请打开命令面板(Ctrl + Shift + P / Ctrl + Command + P),键入“终端:创建新终端”,然后选择它以创建新终端。

  6. 选择终端窗口中的“ 端口 ”选项卡,确认 PostgreSQL 在端口 5432 上运行。

  7. 在终端窗口中,运行 FastAPI 应用。

    uvicorn main:app --reload
    
  8. 选择 “在浏览器中打开”通知。

    如果未看到或错过通知,请转到 端口 并找到端口 8000 的 本地地址 。 使用其中列出的 URL。

  9. 在预览 URL 末尾添加 /docs ,以查看 Swagger UI,可用于测试 API 方法。

    API 方法是从 FastAPI 从代码创建的 OpenAPI 接口生成的。

    显示 FastAPI Swagger UI 的屏幕截图。

  10. 在 Swagger 页面上,运行 POST 方法添加餐厅。

    1. 展开 POST 方法。

    2. 选择试用

    3. 填写请求正文。

      {
        "name": "Restaurant 1",
        "address": "Restaurant 1 address"
      }
      
    4. 选择 “执行 ”以提交更改。

连接到数据库并查看数据

  1. 返回到项目的 GitHub Codespace,选择 SQLTools 扩展,然后选择要连接的 本地数据库

    创建容器时会安装 SQLTools 扩展。 如果 SQLTools 扩展未显示在活动栏中,请关闭代码空间并重新打开它。

  2. 展开 “本地数据库 ”节点,直到找到 餐馆 表,然后右键单击“ 显示表记录”。

    你会看到你添加的餐馆。

    屏幕截图展示如何在 Visual Studio Code 中使用 SQLTools 扩展连接到 Postgres 本地数据库并显示表记录。

清除

若要停止使用 codespace,请关闭浏览器。 (或者,如果通过这种方法打开了 VS Code,请关闭它。)

如果计划再次使用 codespace,可以保留它。 只有运行的 codespace 才会产生 CPU 费用。 已停止的代码空间只会产生存储费用。

如果要删除代码空间,请转到 https://github.com/codespaces 管理代码空间。

后续步骤