首页 >后端开发 >Python教程 >如何创建云构建以允许 Docker 从 Artifact Registry 下载 Python 包

如何创建云构建以允许 Docker 从 Artifact Registry 下载 Python 包

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-09 08:46:07353浏览

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