Google Cloud Run est une plateforme gérée pour déployer et mettre à l'échelle des applications serverless. Google gère l'infrastructure pour vous.
Dans ce guide, nous allons déployer un serveur HTTP Bun sur Google Cloud Run en utilisant un Dockerfile.
NOTE
Avant de continuer, assurez-vous d'avoir :- Une application Bun prête à être déployée
- Un compte Google Cloud avec la facturation activée
- Google Cloud CLI installé et configuré
Initialiser gcloud en sélectionnant/créant un projet
Assurez-vous d'avoir initialisé le Google Cloud CLI. Cette commande vous connecte et vous invite à sélectionner un projet existant ou à en créer un nouveau.
Pour plus d'aide avec le Google Cloud CLI, consultez la documentation officielle.
gcloud initWelcome! This command will take you through the configuration of gcloud.
You must sign in to continue. Would you like to sign in (Y/n)? Y
You are signed in as [email@example.com].
Pick cloud project to use:
[1] existing-bun-app-1234
[2] Enter a project ID
[3] Create a new project
Please enter numeric choice or text value (must exactly match list item): 3
Enter a Project ID. my-bun-app
Your current project has been set to: [my-bun-app]
The Google Cloud CLI is configured and ready to use!(Optionnel) Stocker les informations de votre projet dans des variables d'environnement
Définissez des variables pour votre ID de projet et votre numéro afin qu'elles soient plus faciles à réutiliser dans les étapes suivantes.
PROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='name="my bun app"')
PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='name="my bun app"')
echo $PROJECT_ID $PROJECT_NUMBERmy-bun-app-... [PROJECT_NUMBER]Lier un compte de service de facturation
Listez vos comptes de facturation disponibles et liez-en un à votre projet :
gcloud billing accounts listACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID] My Billing Account TrueLieez votre compte de facturation à votre projet. Remplacez [BILLING_ACCOUNT_ID] par l'ID de votre compte de facturation.
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...Activer les API et configurer les rôles IAM
Activez les services nécessaires et accordez les autorisations Cloud Build :
gcloud services enable run.googleapis.com cloudbuild.googleapis.com
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/run.builderNOTE
Ces commandes activent Cloud Run (`run.googleapis.com`) et Cloud Build (`cloudbuild.googleapis.com`), qui sont requis pour le déploiement à partir du code source. Cloud Run exécute votre application conteneurisée, tandis que Cloud Build gère la construction et l'emballage.La liaison IAM accorde au compte de service Compute Engine ($PROJECT_NUMBER-compute@developer.gserviceaccount.com) l'autorisation de construire et déployer des images en votre nom.
Ajouter un Dockerfile
Créez un nouveau Dockerfile à la racine de votre projet. Ce fichier contient les instructions pour initialiser le conteneur, copier vos fichiers de projet locaux, installer les dépendances et démarrer l'application.
# Utiliser l'image officielle Bun pour exécuter l'application
FROM oven/bun:latest
# Copier le package.json et bun.lock dans le conteneur
COPY package.json bun.lock ./
# Installer les dépendances
RUN bun install --production --frozen-lockfile
# Copier le reste de l'application dans le conteneur
COPY . .
# Exécuter l'application
CMD ["bun", "index.ts"]NOTE
Assurez-vous que la commande de démarrage correspond au point d'entrée de votre application. Cela peut aussi être `CMD ["bun", "run", "start"]` si vous avez un script de démarrage dans votre `package.json`.Cette image installe les dépendances et exécute votre application avec Bun dans un conteneur. Si votre application n'a pas de dépendances, vous pouvez omettre la ligne RUN bun install --production --frozen-lockfile.
Créez un nouveau fichier .dockerignore à la racine de votre projet. Ce fichier contient les fichiers et répertoires qui doivent être exclus de l'image du conteneur, comme node_modules. Cela rend vos builds plus rapides et plus petits :
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Tous les autres fichiers ou répertoires que vous souhaitez exclureDéployer votre service
Assurez-vous d'être dans le répertoire contenant votre Dockerfile, puis déployez directement depuis votre source locale :
NOTE
Mettez à jour l'option `--region` vers votre région préférée. Vous pouvez également omettre cette option pour obtenir une invite interactive pour sélectionner une région.gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticatedDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named
[cloud-run-source-deploy] in region [us-west1] will be created.
Do you want to continue (Y/n)? Y
Building using Dockerfile and deploying container to Cloud Run service [my-bun-app] in project [my-bun-app-...] region [us-west1]
✓ Building and deploying... Done.
✓ Validating Service...
✓ Uploading sources...
✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds...].
✓ Creating Revision...
✓ Routing traffic...
✓ Setting IAM Policy...
Done.
Service [my-bun-app] revision [my-bun-app-...] has been deployed and is serving 100 percent of traffic.
Service URL: https://my-bun-app-....us-west1.run.appVisiter votre application en ligne
🎉 Votre application Bun est maintenant en ligne !
Visitez l'URL du service (https://my-bun-app-....us-west1.run.app) pour confirmer que tout fonctionne comme prévu.