使用 FastAPI 和 Postgres 建立 GitHub Codespaces 開發環境

本文說明如何在 GitHub Codespaces 環境中一起執行 FastAPI 和 Postgres。 Codespaces 是一個雲端託管的開發環境,你可以用來建立可配置且可重複的開發環境。

你可以在整合開發環境(IDE)如 Visual Studio Code 中開啟範例倉庫,並使用 GitHub Codespaces 擴充功能

或者,您也可以在本機複製範例存放庫。 當你在 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. 選取 程式碼Codespaces 標籤頁,然後+ 以建立新的 Codespace。

    顯示如何從 GitHub 存放庫建立 Codespace 的螢幕快照。

  3. 當容器完成建置時,請確認您在瀏覽器左下角看到 Codespaces ,並查看範例存放庫。

    codespace 金鑰組態檔 devcontainer.jsonDockerfiledocker-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: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. 在預覽網址末端加上 /docs ,可以看到 Swagger 的 UI,你可以用它來測試 API 方法。

    API 方法是從程式碼建立的 OpenAPI 介面中,由 FastAPI 產生的。

    顯示 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,請關閉 VS Code。)

如果您打算再次使用 codespace,您可以保留它。 只有執行中的程式代碼空間會產生CPU費用。 已停止的程式代碼空間只會產生記憶體成本。

如果您想要移除程式代碼空間,請前往 https://github.com/codespaces 管理您的程式代碼空間。

後續步驟