容器化 Docker 部署與 Render 上線

當你在自己的電腦上(http://127.0.0.1:8000)測試完所有 API 後,你會遇到一個問題:要怎麼把這包程式碼丟到真正的伺服器上跑?

過去,你可能需要租一台 Linux 機器,自己連進去安裝 Python、裝套件庫、設定環境變數,搞得灰頭土臉。而且,一旦換了一台機器,或是要在別人的電腦上跑,你又要重來一次(經典名言:"It works on my machine!")。

為了解決這個問題,業界目前的標準答案就是:Docker

1. 什麼是 Docker 容器化?

你可以把 Docker 想像成一個「超級貨櫃」。 你把你寫好的 FastAPI 程式碼,連同它需要的 Python 環境、套件版本,全部打包進這個貨櫃裡。 只要伺服器上有安裝 Docker,不管它是什麼作業系統,這個貨櫃放上去就能跑,保證環境 100% 一致。

2. 撰寫 Dockerfile

要打包貨櫃,我們需要寫一張說明書,這張說明書就叫做 Dockerfile(檔名沒有副檔名)。 請在你的 FastAPI 專案根目錄下建立它:

# 步驟 1: 指定基礎映像檔 (基於輕量級的 Python 3.10)
FROM python:3.10-slim

# 步驟 2: 設定工作目錄
WORKDIR /app

# 步驟 3: 將套件清單複製到容器內
COPY requirements.txt .

# 步驟 4: 安裝所有需要的套件
RUN pip install --no-cache-dir -r requirements.txt

# 步驟 5: 將專案內所有的程式碼複製到容器內
COPY . .

# 步驟 6: 對外開放 8000 port
EXPOSE 8000

# 步驟 7: 指定容器啟動時要執行的指令
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

[!WARNING] 千萬別忘了 requirements.txt Docker 是一個乾淨的環境,它裡面什麼套件都沒有。你必須先在本地終端機執行 pip freeze > requirements.txt,把你有用到的套件清單列出來,Docker 才會知道要安裝什麼。 還有,CMD 中的 --host 0.0.0.0 非常重要,如果不加這個,你的 API 只能在容器內部被呼叫,外部網路連不進來!

3. 本地端測試 Docker Image

如果你有在電腦上安裝 Docker Desktop,你可以先在本地端測試打包:

# 建立一個名為 my-fastapi-app 的映像檔
docker build -t my-fastapi-app .

# 將映像檔跑起來,把本機的 8080 port 映射到容器內的 8000 port
docker run -d -p 8080:8000 my-fastapi-app

現在,打開瀏覽器輸入 http://localhost:8080/docs,如果能看到你的 API 文件,恭喜你打包成功了!

4. 零成本部署至 Render

打包好之後,我們要找一個平台來託管它。 Render 是一個對開發者非常友善的雲端平台,它支援直接從 GitHub 讀取你的 Dockerfile 並自動幫你把服務跑起來,而且有提供免費的方案!

部署步驟:

  1. 推上 GitHub:把你的專案程式碼(包含 Dockerfilerequirements.txt)推送到 GitHub 上。
  2. 登入 Render:前往 Render.com 註冊帳號並授權連接你的 GitHub。
  3. 建立 Web Service
    • 點擊 "New +" -> "Web Service"。
    • 選擇 "Build and deploy from a Git repository"。
    • 選擇你剛剛推上去的 Repo。
  4. 設定部署選項
    • Name: 取個好聽的名字(這會成為你網址的一部分)。
    • Environment: 選擇 Docker(這非常重要,告訴 Render 我們有提供 Dockerfile)。
    • Instance Type: 選擇 Free
  5. 環境變數 (Environment Variables): 如果你有使用 JWT Secret Key 或是資料庫連線字串,請在 Render 頁面下方的 "Environment Variables" 區塊把這些金鑰填進去,絕對不要把 .env 檔案 commit 到 GitHub 上!
  6. Deploy!

點下建立後,Render 就會開始讀取你的 Dockerfile,拉取 Python 環境,安裝套件,並啟動 Uvicorn。大約等個 3 到 5 分鐘,綠色的 "Live" 亮起,你的 API 伺服器就正式上線了!

你可以得到一個類似 https://my-fastapi-app.onrender.com 的網址,全世界的前端都可以透過這個網址來呼叫你的 API。

5. 架構回顧與未來展望

恭喜你!你已經完成了從零到一打造現代微服務的旅程。 這套由 FastAPI + Pydantic + SQLAlchemy + JWT + Docker 組成的後端架構,正是目前許多 AI 新創公司(甚至包含 OpenAI 的某些服務)正在使用的技術堆疊。

這套武器不僅讓你具備了極佳的開發速度與防護力,更讓你具備了接下大型外包專案、或是自己創業打造 SaaS 的能力。

接下來,就是讓你的 Next.js 前端應用接上這個強大的引擎,讓世界看見你的作品!

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!