前言 Link to heading

先前的文章中,分享了如何使用 GitHub Actions 進行 CI/CD,來自動化整個部署流程。 除了自動之外,手動部署也是另外一種體驗。這篇文章想和大家分享手動建立 Docker Image 後部署到 Cloud Run 的流程。 (更多關於 Cloud Run 的介紹可以參考先前的文章

手動部署到 Cloud Run Link to heading

步驟 Link to heading

  1. [Local] 準備程式碼與 Dockerfile,並打包成 Docker Image
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Dockerfile
FROM python:3.11
RUN apt-get update && apt-get install -y \
    gcc \
    libc-dev \
    libffi-dev \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /server
COPY . .
RUN pip install -r requirements.txt
CMD ["gunicorn", "main:app", "-k", "uvicorn.workers.UvicornWorker", "-w", "4", "--bind", "0.0.0.0:8000"]
1
docker build -t image_name --platform linux/amd64 -f Dockerfile .
  1. 給予剛剛建立的 image 一個 tag (document)
1
docker tag image:v1 [your-region]-docker.pkg.dev/[your-project-id]/[repo-on-registry]/[image_name]
  1. 上傳至 artifact registry
1
docker push [your-region]-docker.pkg.dev/[your-project-id]/[repo-on-registry]/[image_name]
  1. 部署
    1. 至 Cloud Run 頁面,選擇「建立服務」Imgur
    2. 如果有上傳 artifact registry 成功,就可以去拉剛剛上傳的 image Imgur
    3. 預設會聽 PORT 8080,如果有特殊需要可以修改 Imgur
    4. 疑難排解 - Official Document

後續可能遇到的問題 (會再另外寫文章與大家分享~) Link to heading

  1. 若有使用其他工具 (e.g., MongoDB Atlas),可能會限制存取的 IP,那要怎麼辦?
    -> Serverless VPC Access + VPC + Cloud NAT
  2. 若需要套上自己的網域名稱,那要怎麼辦?
    -> Domain Name + Load Balancer