Skip to content

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 :

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.

bash
gcloud init
txt
Welcome! 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.

bash
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_NUMBER
txt
my-bun-app-... [PROJECT_NUMBER]

Lier un compte de service de facturation

Listez vos comptes de facturation disponibles et liez-en un à votre projet :

bash
gcloud billing accounts list
txt
ACCOUNT_ID            NAME                OPEN  MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID]  My Billing Account  True

Lieez votre compte de facturation à votre projet. Remplacez [BILLING_ACCOUNT_ID] par l'ID de votre compte de facturation.

bash
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]
txt
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 :

bash
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.builder

NOTE

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.

docker
# 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 :

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# Tous les autres fichiers ou répertoires que vous souhaitez exclure

Dé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.
bash
gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticated
txt
Deploying 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.app

Visiter 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.

Bun édité par www.bunjs.com.cn