Cloud Run permet de déployer directement le code source. Toutefois, vous pouvez également compiler votre code source dans une image de conteneur, puis déployer cette image de conteneur dans Cloud Run. Vous pouvez utiliser des images de conteneurs pour n'importe quelle ressource Cloud Run.
Voici quelques cas d'utilisation courants pour dissocier les opérations de compilation et de déploiement :
- Intégration et livraison continues : les développeurs créent et envoient du code à un dépôt de code source. Un système CI/CD compile automatiquement ce code source dans un conteneur, exécute des tests et le déploie automatiquement dans un environnement de préproduction.
- Infrastructure as Code : les ressources Cloud Run gérées à l'aide de YAML ou de Terraform font référence à une URL d'image de conteneur. Le code source écrit par les développeurs doit être intégré dans une image de conteneur.
Vous pouvez utiliser le système de votre choix pour créer un conteneur. Cette page décrit les différentes façons d'utiliser Cloud Build pour créer des images de conteneur :
Exigences pour les services Cloud Run
Pour les services Cloud Run, vous pouvez utiliser des images de conteneur créées avec n'importe quel outil capable de générer des images de conteneur, pour autant qu'elles respectent le contrat relatif au conteneur.
En particulier, votre code doit écouter les requêtes HTTP sur le port défini par la variable d'environnement PORT
. Cette variable d'environnement PORT
est automatiquement injectée par Cloud Run dans votre conteneur.
Avant de commencer
Vous avez besoin de Google Cloud CLI pour exécuter certaines des commandes de cette page.
Créez un dépôt dans un registre de conteneurs compatible. Pour créer un dépôt Artifact Registry, exécutez la commande suivante :
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION \ --description="DESCRIPTION" \ --immutable-tags \ --async
Vous pouvez configurer Docker pour accéder à Artifact Registry à l'aide de l'assistant d'identification de la gcloud CLI :
Remplacezgcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION
par le nom de la région de votre dépôt de conteneurs, par exempleus-west2
.
Compiler à l'aide d'un fichier Dockerfile
Avant de compiler en local vos sources dans une image de conteneur ("conteneurisation") à l'aide de Docker ou Cloud Build, vous devez disposer d'un fichier Dockerfile et de sources. Les exemples Hello World contiennent des exemples d'applications et des fichiers Dockerfile dans de nombreux langages courants.
Si vous utilisez des fichiers Dockerfile, vous pouvez procéder de l'une ou l'autre des manières suivantes :
- Compiler à l'aide de Cloud Build
- Compiler localement à l'aide de Docker
Compiler à l'aide de Cloud Build
Vous pouvez créer une image sur Google Cloud en utilisant Cloud Build :
Naviguez jusqu'au dossier contenant vos sources et votre fichier Docker.
Exécutez la commande suivante :
gcloud builds submit --tag IMAGE_URL
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Pour obtenir des conseils sur l'amélioration des performances de compilation, consultez la page Bonnes pratiques pour accélérer les compilations.
Créer des images localement et les transférer à l'aide de Docker
Si Docker est installé localement, vous pouvez utiliser docker build
au lieu d'utiliser Cloud Build ou les buildpacks Google Cloud.
Pour créer une image de conteneur à l'aide de Docker, procédez comme suit :
Accédez au dossier contenant vos sources et votre fichier
Dockerfile
.Exécutez la commande suivante :
docker build . --tag IMAGE_URL
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.Notez que si vous utilisez un Mac avec Apple Silicon, vous devez spécifier
--platform linux/amd64
dans la ligne de commande.Transférez l'image de conteneur vers un registre de conteneurs compatible :
docker push IMAGE_URL
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Pour exclure les fichiers locaux de ce processus, suivez les instructions du fichier de configuration .dockerignore
.
Compiler à l'aide des buildpacks Google Cloud
Les buildpacks de Google Cloud sont un ensemble de packs de création compatibles avec CNCF qui compilent du code source dans des images de conteneurs conçues pour s'exécuter sur les plates-formes de conteneurs Google Cloud , y compris Cloud Run.
Pour obtenir la liste des langages acceptés, consultez la documentation sur les buildpacks de Google Cloud.
Compiler avec les buildpacks Google Cloud à l'aide de Cloud Build
Pour compiler avec les buildpacks Google Cloud :
Accédez au dossier contenant vos sources.
Exécutez la commande suivante :
gcloud builds submit --pack image=IMAGE_URL
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.Attendez la fin de la compilation.
Compiler avec les buildpacks Google Cloud à l'aide de la ligne de commande pack
Pour compiler à l'aide de la ligne de commande pack :
Si vous ne l'avez pas déjà fait, installez Docker.
Si vous ne l'avez pas déjà fait, installez
pack
.Accédez au dossier contenant vos sources.
Exécutez la commande suivante pour créer des conteneurs et les transférer vers votre registre de conteneurs compatible :
pack build --publish IMAGE_URL
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL est au formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.Attendez que
pack
ait terminé.
Pour en savoir plus, consultez les instructions de la section Créer une application.
Étapes suivantes
Pour déployer vos conteneurs créés sur Cloud Run, suivez les consignes Déployer des services.
Découvrez comment créer et mettre à jour des tâches Cloud Run à partir de l'image de conteneur que vous avez créée.
Une fois votre conteneur créé, vous pouvez effectuer des tests en local avant de le déployer sur Cloud Run. Pour en savoir plus, consultez la section Tester un service Cloud Run localement.
Après avoir créé ou mis à jour un job à l'aide du conteneur créé, découvrez comment exécuter le job de manière unique, planifiée ou dans le cadre d'un workflow.
Pour automatiser les versions et les déploiements de vos services Cloud Run à l'aide des déclencheurs Cloud Build, configurez le déploiement continu.
Pour optimiser la création de conteneurs pour une application Java, consultez la page Créer des conteneurs Java avec Jib.