Compiler une application Python

Les buildpacks sont compatibles avec la configuration idiomatique du langage via des variables d'environnement.

Spécifier la version de Python

Par défaut, le buildpack d'exécution Python utilise la dernière version stable de l'interpréteur Python. Si votre application nécessite une version spécifique, vous pouvez en spécifier une en incluant un fichier .python-version dans le répertoire racine de l'application.

3.9.9

Utiliser GOOGLE_PYTHON_VERSION

Il est également possible de spécifier la version de Python via la variable d'environnement GOOGLE_PYTHON_VERSION. Si les deux options sont spécifiées, la valeur de GOOGLE_PYTHON_VERSION est prioritaire sur le fichier .python-version. Par défaut, si aucune des options n'est spécifiée (ni le fichier .python-version, ni la variable d'environnement GOOGLE_PYTHON_VERSION), la dernière version LTS de Python est utilisée.

Procédez comme suit pour configurer le buildpack afin d'utiliser Python 3.10 lors du déploiement de votre application :

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_PYTHON_VERSION="3.10.x"

Vous pouvez également utiliser un descripteur de projet project.toml pour encoder la variable d'environnement avec vos fichiers de projet. Consultez les instructions décrivant la compilation de l'application avec des variables d'environnement.

Spécifier des dépendances avec pip

Le buildpack Python est compatible avec la gestion des dépendances d'application à l'aide de pip. Les dépendances de votre application doivent être déclarées dans un fichier requirements.txt placé dans le répertoire racine.

Le fichier requirements.txt contient une ligne par package. Chaque ligne contient le nom du package et, éventuellement, la version demandée. Pour en savoir plus, consultez la documentation de référence sur requirements.txt.

Voici un exemple de fichier requirements.txt :

requests==2.20.0
numpy

Configurer pip

Il est possible de configurer le comportement de pip à l'aide de variables d'environnement :

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env PIP_DEFAULT_TIMEOUT='60'

Dépendances privées d'Artifact Registry

Un dépôt Python Artifact Registry peut héberger des dépendances privées pour votre fonction Python. Lors de la compilation d'une application sur Cloud Build, le buildpack Python génère automatiquement des identifiants Artifact Registry pour le compte de service Cloud Build. Il vous suffit d'inclure l'URL Artifact Registry dans votre fichier requirements.txt sans générer d'identifiants supplémentaires. Exemple :

--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage

Point d'entrée de l'application

Le buildpack Python utilise Gunicorn comme serveur HTTP WSGI par défaut pour votre charge de travail. Les applications créées avec le buildpack Python lancent le processus gunicorn avec des paramètres par défaut, semblables à ceux de l'exécution:

gunicorn --bind :8080 main:app

Personnaliser le point d'entrée de l'application

Vous pouvez remplacer les valeurs par défaut de Gunicorn et les valeurs par défaut de entrypoint et personnaliser la commande de démarrage de votre application à l'aide d'une variable d'environnement Procfile ou d'une variable d'environnement.

Vous pouvez créer un fichier Procfile avec vos paramètres personnalisés dans le répertoire racine. Exemple :

web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

Vous pouvez également utiliser la variable d'environnement GOOGLE_ENTRYPOINT avec la commande pack. Exemple :

pack build sample-python \
  --builder gcr.io/buildpacks/builder
  --env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"

Variables d'environnement

Le buildpack Python est compatible avec les variables d'environnement suivantes, afin de personnaliser votre conteneur :

PIP_<key>

Consultez la documentation sur pip.

Exemple : PIP_DEFAULT_TIMEOUT=60 permet de définir le paramètre --default-timeout=60 pour les commandes pip.