本文說明如何在 GitHub Codespaces 環境中一起執行 FastAPI 和 Postgres。 Codespaces 是一個雲端託管的開發環境,你可以用來建立可配置且可重複的開發環境。
你可以在整合開發環境(IDE)如
或者,您也可以在本機複製範例存放庫。 當你在 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 標籤頁,然後+ 以建立新的 Codespace。
當容器完成建置時,請確認您在瀏覽器左下角看到 Codespaces ,並查看範例存放庫。
codespace 金鑰組態檔 devcontainer.json、 Dockerfile 和 docker-compose.yml。 如需詳細資訊,請參閱 GitHub Codespaces 概觀。
小提示
您也可以在 Visual Studio Code 中執行程式代碼空間。 選取瀏覽器左下角的 Codespaces 或 (
Ctrl+Shift+P/Ctrl+Command+P),然後輸入 “Codespaces”。 然後選取 [ 在 VS Code 中開啟]。 此外,如果您停止程式代碼空間並返回存放庫,並在 GitHub Codespaces 中再次開啟它,您可以選擇在 VS Code 或瀏覽器中開啟它。Note
如果 PostgreSQL 無法啟動(容器當機),可能是因為 PostgreSQL 18+ 與現有資料目錄卷不相容。 編輯
.devcontainer/docker-compose.yaml並改postgres:latest成postgres: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。
在預覽網址末端加上 /docs ,可以看到 Swagger 的 UI,你可以用它來測試 API 方法。
API 方法是從程式碼建立的 OpenAPI 介面中,由 FastAPI 產生的。
在 Swagger 頁面上,執行 POST 方法來新增餐廳。
展開 POST 方法。
選取 [試試看]。
填入請求內文。
{ "name": "Restaurant 1", "address": "Restaurant 1 address" }選擇 執行 以提交變更。
線上到資料庫並檢視數據
返回專案的 GitHub Codespace,選取 SQLTools 擴充功能,然後選取 [要連線的 本機資料庫 ]。
SQLTools 擴充功能是在容器建立時安裝的。 如果 SQLTools 擴充功能沒有出現在活動列,請關閉程式碼空間再重新開啟。
展開 [本機資料庫] 節點,直到您找到 餐廳 數據表為止,然後右鍵點選 [顯示資料表記錄]。
你看到你新增的餐廳。
收拾整理
若要停止使用 codespace,請關閉瀏覽器。 (或者,如果您以這種方式開啟 VS Code,請關閉 VS Code。)
如果您打算再次使用 codespace,您可以保留它。 只有執行中的程式代碼空間會產生CPU費用。 已停止的程式代碼空間只會產生記憶體成本。
如果您想要移除程式代碼空間,請前往 https://github.com/codespaces 管理您的程式代碼空間。