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. -
- 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.
- 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.
- Assurez-vous d'avoir une autorité appropriée pour lire le fichier.
-
Exemple dockerfile -
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!