Maison >développement back-end >Tutoriel Python >Comment créer une version cloud pour permettre à Docker de télécharger des packages Python à partir d'Artifact Registry

Comment créer une version cloud pour permettre à Docker de télécharger des packages Python à partir d'Artifact Registry

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 08:46:07364parcourir

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

Artifact Registry de Google Cloud est un outil puissant pour gérer les dépendances de votre application. Ce guide montre comment créer un pipeline Cloud Build pour permettre à Docker d'accéder aux packages Python stockés dans Artifact Registry. En suivant ces étapes, vous pouvez gérer en toute sécurité les dépendances et rationaliser les déploiements.


Conditions préalables

  1. Projet Google Cloud : assurez-vous d'avoir configuré un projet GCP.
  2. Artifact Registry : Un référentiel Python doit déjà être configuré dans Artifact Registry.
  3. Cloud Build : activez l'API Cloud Build pour votre projet.
  4. Authentification : configurez les autorisations du compte de service pour accéder à Artifact Registry.

Étapes pour configurer Cloud Build

1. Générez un jeton de registre d'artefacts

Utilisez gcloud auth pour générer un jeton d'accès qui permettra au processus de construction Docker de s'authentifier auprès d'Artifact Registry. Voici comment procéder :

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. Utilisez le jeton dans Docker Build

Une fois le jeton généré, il peut être transmis au processus de construction du docker en tant qu'argument de construction. Voici comment :

  - 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. Créez le fichier Docker

Le Dockerfile est configuré pour utiliser le jeton pour télécharger les packages Python depuis Artifact Registry :

# 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. Ajouter des options de configuration de construction

Enfin, définissez d'autres configurations telles que le type de machine, la journalisation et les substitutions :

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

Balises et métadonnées

Pour mieux organiser vos builds, incluez des balises significatives :

tags:
  - gcp-cloud-build
  - artifact-registry
  - docker-python-packages

Résumé

Cette configuration garantit que vos builds Docker dans Cloud Build peuvent extraire en toute sécurité les dépendances Python de votre Artifact Registry à l'aide d'un jeton d'accès. Ajustez la configuration fournie aux détails spécifiques à votre projet, tels que les noms de packages, les URL de référentiel et les cibles de déploiement.

La mise en œuvre de ce pipeline améliorera la sécurité et rendra la gestion des dépendances transparente pour vos projets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn