Google Cloud 的 Artifact Registry 是一個用於管理應用程式依賴項的強大工具。本指南示範如何建立 Cloud Build 管道以使 Docker 能夠存取儲存在 ArtifactRegistry 中的 Python 套件。透過執行以下步驟,您可以安全地管理依賴項並簡化部署。
使用 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"
令牌產生後,可以將其作為建置參數傳遞給 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 .
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"]
最後,定義其他配置,例如機器類型、日誌記錄和替換:
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中文網其他相關文章!