Google Cloud の Artifact Registry は、アプリケーションの依存関係を管理するための強力なツールです。このガイドでは、Cloud Build パイプラインを作成して Docker が Artifact Registry に保存されている Python パッケージにアクセスできるようにする方法を説明します。これらの手順に従うことで、依存関係を安全に管理し、デプロイメントを合理化できます。
前提条件
-
Google Cloud プロジェクト: GCP プロジェクトが設定されていることを確認してください。
-
Artifact Registry: Python リポジトリは Artifact Registry ですでに構成されている必要があります。
-
Cloud Build: プロジェクトの Cloud Build API を有効にします。
-
認証: Artifact Registry にアクセスするためのサービス アカウントのアクセス許可を構成します。
Cloud Build を構成する手順
1. アーティファクト レジストリ トークンを生成する
gcloud auth を使用して、Docker ビルド プロセスが Artifact Registry で認証できるようにするアクセス トークンを生成します。これを行う方法は次のとおりです:
1 2 3 4 5 6 7 8 9 10 | 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 ビルド プロセスに渡すことができます。その方法は次のとおりです:
1 2 3 4 5 6 7 8 9 10 11 12 13 | - 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 パッケージをダウンロードするように構成されています:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # 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:
--extra-index-url https:
"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. ビルド構成オプションの追加
最後に、マシンタイプ、ロギング、置換などの他の構成を定義します。
1 2 3 4 5 6 7 8 9 | 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
|
ログイン後にコピー
タグとメタデータ
ビルドをより適切に整理するには、意味のあるタグを含めます:
1 2 3 4 | tags:
- gcp-cloud-build
- artifact-registry
- docker-python-packages
|
ログイン後にコピー
まとめ
この設定により、Cloud Build の Docker ビルドがアクセス トークンを使用して Artifact Registry から Python の依存関係を安全に取得できるようになります。提供された構成を、パッケージ名、リポジトリ URL、デプロイメント ターゲットなどのプロジェクト固有の詳細に合わせて調整します。
このパイプラインを実装すると、セキュリティが向上し、プロジェクトの依存関係管理がシームレスになります。
以上がDocker が Artifact Registry から Python パッケージをダウンロードできるようにする Cloud ビルドを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。