本文介绍如何在 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 的多种可能方法之一。
转到示例应用存储库 https://github.com/Azure-Samples/msdocs-fastapi-postgres-codespace。
示例存储库具有使用 Postgres 数据库创建具有 FastAPI 应用的环境所需的所有配置。 可以按照为 GitHub Codespaces 设置 Python 项目中的步骤创建类似的项目。
选择代码选项卡,代码空间选项卡,然后+创建新的代码空间。
容器生成完成后,确认在浏览器左下角看到 Codespaces ,并查看示例存储库。
代码空间密钥配置文件 devcontainer.json、 Dockerfile 和 docker-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的卷与之前的版本不兼容。选择 .env.devcontainer 文件,并创建一个名为 .env 的副本,其中包含相同的内容。
.env 文件包含代码用于连接到数据库的环境变量。
如果终端窗口尚未打开,请打开命令面板(
Ctrl+Shift+P/Ctrl+Command+P),键入“终端:创建新终端”,然后选择它以创建新终端。选择终端窗口中的“ 端口 ”选项卡,确认 PostgreSQL 在端口 5432 上运行。
在终端窗口中,运行 FastAPI 应用。
uvicorn main:app --reload选择 “在浏览器中打开”通知。
如果未看到或错过通知,请转到 端口 并找到端口 8000 的 本地地址 。 使用其中列出的 URL。
在预览 URL 末尾添加 /docs ,以查看 Swagger UI,可用于测试 API 方法。
API 方法是从 FastAPI 从代码创建的 OpenAPI 接口生成的。
在 Swagger 页面上,运行 POST 方法添加餐厅。
展开 POST 方法。
选择试用。
填写请求正文。
{ "name": "Restaurant 1", "address": "Restaurant 1 address" }选择 “执行 ”以提交更改。
连接到数据库并查看数据
返回到项目的 GitHub Codespace,选择 SQLTools 扩展,然后选择要连接的 本地数据库 。
创建容器时会安装 SQLTools 扩展。 如果 SQLTools 扩展未显示在活动栏中,请关闭代码空间并重新打开它。
展开 “本地数据库 ”节点,直到找到 餐馆 表,然后右键单击“ 显示表记录”。
你会看到你添加的餐馆。
清除
若要停止使用 codespace,请关闭浏览器。 (或者,如果通过这种方法打开了 VS Code,请关闭它。)
如果计划再次使用 codespace,可以保留它。 只有运行的 codespace 才会产生 CPU 费用。 已停止的代码空间只会产生存储费用。
如果要删除代码空间,请转到 https://github.com/codespaces 管理代码空间。