ホームページ >バックエンド開発 >Python チュートリアル >Docker が Artifact Registry から Python パッケージをダウンロードできるようにする Cloud ビルドを作成する方法

Docker が Artifact Registry から Python パッケージをダウンロードできるようにする Cloud ビルドを作成する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-09 08:46:07426ブラウズ

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

Google Cloud の Artifact Registry は、アプリケーションの依存関係を管理するための強力なツールです。このガイドでは、Cloud Build パイプラインを作成して Docker が Artifact Registry に保存されている Python パッケージにアクセスできるようにする方法を説明します。これらの手順に従うことで、依存関係を安全に管理し、デプロイメントを合理化できます。


前提条件

  1. Google Cloud プロジェクト: GCP プロジェクトが設定されていることを確認してください。
  2. Artifact Registry: Python リポジトリは Artifact Registry ですでに構成されている必要があります。
  3. Cloud Build: プロジェクトの Cloud Build API を有効にします。
  4. 認証: Artifact Registry にアクセスするためのサービス アカウントのアクセス許可を構成します。

Cloud Build を構成する手順

1. アーティファクト レジストリ トークンを生成する

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 Build でトークンを使用する

トークンが生成されると、それをビルド引数として 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 パッケージをダウンロードできるようにする Cloud ビルドを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。