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中文网其他相关文章!