首頁 >後端開發 >Python教學 >如何建立雲端建置以允許 Docker 從 Artifact Registry 下載 Python 套件

如何建立雲端建置以允許 Docker 從 Artifact Registry 下載 Python 套件

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-09 08:46:07364瀏覽

How to Create a Cloud Build to Allow Docker to Download Python Packages from Artifact Registry

Google Cloud 的 Artifact Registry 是一個用於管理應用程式依賴項的強大工具。本指南示範如何建立 Cloud Build 管道以使 Docker 能夠存取儲存在 ArtifactRegistry 中的 Python 套件。透過執行以下步驟,您可以安全地管理依賴項並簡化部署。


先決條件

  1. Google Cloud 專案:確保您已設定 GCP 專案。
  2. ArtifactRegistry:Python 儲存庫應該已經在 ArtifactRegistry 中配置。
  3. Cloud Build:為您的專案啟用 Cloud Build API。
  4. 驗證:配置服務帳戶權限以存取工件註冊表。

配置雲端建置的步驟

1. 產生 Artifact 註冊表令牌

使用 gcloud auth 產生存取令牌,該令牌將允許 Docker 建置過程透過 Artifact Registry 進行驗證。執行此操作的方法如下:

steps:
  # Generate Artifact Registry token
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    entrypoint: bash
    args:
      - '-c'
      - |
        art=$(gcloud auth print-access-token)
        echo "$art" > /workspace/artifact_registry_token
        echo "$art"

2.在Docker建置中使用Token

令牌產生後,可以將其作為建置參數傳遞給 docker 建置過程。方法如下:

  - name: gcr.io/cloud-builders/docker
    id: Build
    env:
      - 'btf=/workspace/artifact_registry_token'
    entrypoint: bash
    args:
      - '-c'
      - |
        docker build \
          --build-arg ARTIFACT_REGISTRY_TOKEN=$(cat $btf) \
          --build-arg PROJECT_ID=$PROJECT_ID \
          -t test-image:latest \
          -f Dockerfile .

3. 建立 Dockerfile

Dockerfile 設定為使用令牌從 Artifact Registry 下載 Python 套件:

# syntax=docker/dockerfile:1

FROM python:3.11-slim

ARG ARTIFACT_REGISTRY_TOKEN
ARG PROJECT_ID

# Keeps Python from buffering stdout and stderr
ENV PYTHONUNBUFFERED=1

WORKDIR /app

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

# Install dependencies using the token
RUN pip install \
    --index-url https://pypi.org/simple \
    --extra-index-url https://oauth2accesstoken:${ARTIFACT_REGISTRY_TOKEN}@us-central1-python.pkg.dev/${PROJECT_ID}/python-packages/simple/ \
    "your-package-name==your-package-version"

# Expose the application port
EXPOSE 8080

# Command to run the application
CMD ["uvicorn", "main:app", "--port=8080", "--host=0.0.0.0"]

4. 新增建置配置選項

最後,定義其他配置,例如機器類型、日誌記錄和替換:

options:
  machineType: E2_HIGHCPU_8
  substitutionOption: ALLOW_LOOSE
  logging: CLOUD_LOGGING_ONLY
substitutions:
  _PACKAGE: your-package-name==your-package-version
  _REPOSITORY: python-packages
  _LOCATION: us-central1
  _PROJECT_ID: your-project-id

標籤和元數據

為了更好地組織您的構建,請包含有意義的標籤:

tags:
  - gcp-cloud-build
  - artifact-registry
  - docker-python-packages

概括

此設定可確保您在 Cloud Build 中建置的 Docker 可以使用存取權杖從 Artifact Registry 安全地提取 Python 依賴項。將提供的配置調整為特定於專案的詳細信息,例如套件名稱、儲存庫 URL 和部署目標。

實施此管道將提高安全性並使您的專案無縫依賴管理。

以上是如何建立雲端建置以允許 Docker 從 Artifact Registry 下載 Python 套件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn