Maison > développement back-end > Tutoriel Python > Comment installer des packages Python à partir du registre GCP Artifact dans Docker Fichier

Comment installer des packages Python à partir du registre GCP Artifact dans Docker Fichier

Susan Sarandon
Libérer: 2025-01-28 16:14:16
original
218 Les gens l'ont consulté

How to Install Python Packages from GCP Artifact Registry in Docker file

Vous avez développé un excellent package Python pour fournir une utilisation interne de l'entreprise. Vous souhaitez le publier afin que votre collègue puisse commencer à l'utiliser. Parce que le package est uniquement pour un usage interne, il ne peut pas être publié sur le PYPI (registre officiel des packages Python). Au lieu de cela, comme votre entreprise utilise GCP, le choix naturel est le registre des artefacts.

Comme décrit dans le document, il est très simple de publier le package dans le registre.

J'utilise la bibliothèque Poetry Packaging. Voici quelques commandes que vous utiliserez:

Après avoir publié votre sac au registre des artefacts, vous pouvez le fournir en tant qu'élément de dépendance pour d'autres projets.
<code class="language-bash">poetry source add --priority=supplemental gcp_registry https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/
poetry publish --no-interaction --build --repository gcp_registry</code>
Copier après la connexion

Package d'installation

Installation d'un package sur la machine locale, veuillez créer un fichier exigence_private.txt:

Ensuite, utilisez la commande suivante pour installer des packages:

<code>--index-url https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/simple/
--extra-index-url https://pypi.org/simple
{YOUR_PACKAGE_NAME}</code>
Copier après la connexion
Copier après la connexion

Le traitement du package de clés Authentification du registre des artefacts. Assurez-vous que votre application est par défaut l'application (ADC) avant de continuer.

<code class="language-bash">pip install keyring
pip install keyrings.google-artifactregistry-auth
pip install -r /opt/requirements_private.txt</code>
Copier après la connexion

Docker Challenge


Lorsque vous exécutez une application dans Docker, vous ferez face à d'autres défis:

Vous ne souhaitez pas copier des informations sensibles (telles que votre fichier de compte de service) sur le miroir Docker.

    Vous devez toujours utiliser le registre des artefacts pour l'authentification.
  1. La solution est simple, mais il n'y a pas de bon enregistrement de document. Il m'a fallu quelques jours pour comprendre cela, donc je veux gagner du temps et vous aider à le réaliser dans quelques minutes.

Solution


Passer Google_Application_Credentials Variables d'environnement pendant la période de construction de Docker, pointant le chemin du fichier du compte de service (plutôt que le contenu de fichier lui-même).

Le fichier de compte de service est secrètement installé sous le chemin spécifié par Google_Application_Credentials.
  1. Toutes les opérations sont effectuées dans la même déclaration d'exécution, y compris l'installation de sacs de clés et de dépendances privées. Ceci est important car l'installation de fichiers n'existe que dans le contexte.
  2. Assurez-vous d'avoir une autorité appropriée pour lire le fichier.
  3. Exemple dockerfile
  4. Ce qui suit est l'apparence de votre dockerfile:

exigences_private.txt est toujours le même.

<code class="language-dockerfile">ARG GOOGLE_APPLICATION_CREDENTIALS

COPY requirements_private.txt /opt/requirements_private.txt

RUN --mount=type=secret,id=creds,target=/opt/mykey.json,mode=0444 \
     pip install keyring && \
     pip install keyrings.google-artifactregistry-auth && \
     pip install -r /opt/requirements_private.txt

COPY requirements.txt /opt/requirements.txt
RUN pip install -r /opt/requirements.txt</code>
Copier après la connexion
Comme vous pouvez le voir, vous pouvez avoir plusieurs fichiers d'exigences. Dans mon exemple, le fichier exigence.txt est utilisé pour héberger le package dans le registre public PYPI. Ensuite, votre fichier docker_compose.yml

<code>--index-url https://{LOCATION}-python.pkg.dev/{REPO}/{PACKAGE}/simple/
--extra-index-url https://pypi.org/simple
{YOUR_PACKAGE_NAME}</code>
Copier après la connexion
Copier après la connexion
Ensuite, vous pouvez exécuter la commande de construction:

<code class="language-yaml">services:
  app:
    build:
      context: .
      args:
        - GOOGLE_APPLICATION_CREDENTIALS=/opt/mykey.json
      secrets:
        - creds

secrets:
  creds:
    file: "C:/your/local/host/path/to/google_service_account.json"</code>
Copier après la connexion
J'espère que cet article vous aidera à intégrer avec Artefact Registry et Docker.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal