Nouveau : Datasets open source gratuits disponibles !Decouvrir →
☁️
Intermediaire 25 min Astro

Deployer Astro sur GCP

Pourquoi Deployer Astro sur GCP ?

Dans un monde où les applications web grandissent en taille et en complexité, le choix d'un bon environnement de déploiement est crucial pour assurer la performance, la sécurité et l'évolutivité de vos projets. Google Cloud Platform (GCP) est une plateforme cloud puissante offrant des services dédiés à chaque aspect du développement web. Astro, un framework moderne et performant pour construire des sites statiques, utilise GCP pour son déploiement car il offre des solutions optimisées pour la performance et la scalabilité.

Un cas d'usage concret est l'utilisation de Astro pour développer une application d'e-commerce. Avec un grand nombre de pages à générer et à rendre statiquement, le déployement sur GCP permet de tirer parti des capacités de stockage distribué et des services de traitement en masse pour garantir une charge minimale sur les serveurs web.

Prerequis

Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

Concepts fondamentaux

1. Astro

Astro est un framework modern pour construire des sites statiques, conçu pour offrir une expérience de développement fluide et performante. Il utilise la dernière génération d'outils de build et de rendu pour créer des applications web optimisées.

## Exemple de fichier Astro
---
// Componente Astro avec du JSX
const title = "Bienvenue sur mon site";
---

<html lang="fr">
  <head>
    <title>{title}</title>
  </head>
  <body>
    <h1>{title}</h1>
  </body>
</html>

2. Google Cloud Storage

GCP Storage est un service de stockage à grande échelle offrant des capacités de stockage fiables et évolutives. Il est idéal pour héberger des fichiers statiques comme les images, les styles CSS, et les scripts JavaScript.

## Installation de gsutil (outil de gestion du stockage GCP)
gcloud components install gsutil

3. Google Cloud Run

Cloud Run permet d'exécuter des conteneurs à l'échelle dynamique. Il est parfait pour déployer des applications web statiques générées par Astro.

## Configuration de gcloud avec votre projet GCP
gcloud config set project VOTRE_PROJET_GCP

## Création d'un conteneur Cloud Run
gcloud run deploy --image gcr.io/VOTRE_PROJET_GCP/nom-de-votre-image --platform managed

Mise en pratique : Projet fil rouge - Gestionnaire de Tâches

Nous allons créer un gestionnaire de tâches simple en utilisant Astro. Ce projet comprendra les fonctionnalités suivantes :

  • Ajouter une nouvelle tâche
  • Marquer une tâche comme terminée
  • Supprimer une tâche

Étape 1 : Initialisation du Projet

Commencez par créer un nouveau projet Astro.

## Installation de Astro CLI (si non déjà installé)
npm install -g astro

## Création d'un nouveau projet Astro
astro create gestionnaire-taches
cd gestionnaire-taches

Étape 2 : Configuration du Projet

Créez un fichier .env.local pour stocker les variables d'environnement.

## .env.local
VITE_API_URL=http://localhost:3000/api/tasks

Étape 3 : Création des Composants

Créez les composants nécessaires pour l'application.

## src/pages/index.astro
---
// Componente principale de la page d'accueil
import TaskForm from '../components/TaskForm.astro';
import TaskList from '../components/TaskList.astro';
---

<html lang="fr">
  <head>
    <title>Gestionnaire de Tâches</title>
  </head>
  <body>
    <h1>Gestionnaire de Tâches</h1>
    <TaskForm />
    <TaskList />
  </body>
</html>
astro
## src/components/TaskForm.astro
---
// Formulaire pour ajouter une nouvelle tâche
import { useState } from 'react';

const [task, setTask] = useState('');

const handleSubmit = async (e) => {
  e.preventDefault();
  // Envoi de la tâche au serveur
};
---

<form onSubmit={handleSubmit}>
  <input type="text" value={task} onChange={(e) => setTask(e.target.value)} />
  <button type="submit">Ajouter</button>
</form>
astro
## src/components/TaskList.astro
---
// Liste des tâches
import { useState, useEffect } from 'react';

const [tasks, setTasks] = useState([]);

useEffect(() => {
  // Récupération des tâches du serveur
}, []);

return (
  <ul>
    {tasks.map((task) => (
      <li key={task.id}>
        {task.title}
        <button onClick={() => handleToggle(task.id)}>Terminer</button>
        <button onClick={() => handleDelete(task.id)}>Supprimer</button>
      </li>
    ))}
  </ul>
);

Étape 4 : Déploiement sur GCP

Stockage des Tâches

Utilisez Google Cloud Storage pour stocker les tâches.

## Création d'un bucket de stockage GCS
gsutil mb gs://nom-de-votre-bucket

Déploiement de l'Application

  1. Créez un fichier Dockerfile pour votre application Astro :

    # Dockerfile
    FROM node:14 as build-stage
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    RUN npm run build
    
    FROM gcr.io/distroless/nodejs:14 as production-stage
    WORKDIR /app
    COPY --from=build-stage /app/dist /app/dist
    EXPOSE 8080
    CMD ["node", "dist/index.js"]
    
  2. Créez un fichier package.json pour votre application Astro :

    {
      "name": "gestionnaire-taches",
      "version": "1.0.0",
      "scripts": {
        "build": "astro build --output static"
      },
      "dependencies": {
        "react": "^17.0.2"
      }
    }
    
  3. Déploiement sur Google Cloud Run :

    # Construction de l'image Docker
    gcloud builds submit --tag gcr.io/VOTRE_PROJET_GCP/gestionnaire-taches
    
    # Déploiement sur Cloud Run
    gcloud run deploy gestionnaire-taches --image gcr.io/VOTRE_PROJET_GCP/gestionnaire-taches --platform managed
    

Erreurs Frequentes et Debugging

1. Problème de CORS

Astro peut rencontrer des problèmes de CORS lorsqu'il essaye d'accéder à un serveur distant.

## 🚫 Mauvais
fetch('http://api.example.com/tasks')
  .then(response => response.json())
  .catch(error => console.error(error));

Correction :

// ✅ Correct
const headers = new Headers();
headers.append('Access-Control-Allow-Origin', '*');

fetch('http://api.example.com/tasks', { headers })
  .then(response => response.json())
  .catch(error => console.error(error));

2. Erreur de Build

Astro peut émettre des erreurs lors du build si la structure de fichiers n'est pas correcte.

## 🚫 Mauvais
// Fichier incorrect : src/components/TaskForm.jsx
import { useState } from 'react';

const [task, setTask] = useState('');

const handleSubmit = async (e) => {
  e.preventDefault();
  // Envoi de la tâche au serveur
};

Correction :

// ✅ Correct
// Fichier correct : src/components/TaskForm.astro
---
import { useState } from 'react';

const [task, setTask] = useState('');

const handleSubmit = async (e) => {
  e.preventDefault();
  // Envoi de la tâche au serveur
};
---

<form onSubmit={handleSubmit}>
  <input type="text" value={task} onChange={(e) => setTask(e.target.value)} />
  <button type="submit">Ajouter</button>
</form>

3. Erreur de Déploiement sur Cloud Run

Astro peut rencontrer des erreurs lors du déploiement sur Google Cloud Run si le fichier Dockerfile n'est pas correct.

## 🚫 Mauvais
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]

Correction :

// ✅ Correct
FROM node:14 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM gcr.io/distroless/nodejs:14 as production-stage
WORKDIR /app
COPY --from=build-stage /app/dist /app/dist
EXPOSE 8080
CMD ["node", "dist/index.js"]

Pour aller plus loin

1. Sécurité des Données avec Firebase Authentication

Intégrez Firebase Authentication pour gérer les utilisateurs et sécuriser l'accès aux données.

2. Optimisation du Performance avec Cloud CDN

Utilisez Google Cloud CDN pour accélérer le rendu des pages statiques générées par Astro.

3. Gestion de l'Évolutivité avec Cloud Functions

Ajoutez des fonctionnalités backend avec Google Cloud Functions pour traiter des tâches asynchrones.

Défi Pratique

Créez une application web complète en utilisant Astro et GCP. Cette application devrait permettre de gérer des notes personnelles avec les fonctionnalités suivantes :

  • Ajouter une nouvelle note
  • Modifier le contenu d'une note
  • Supprimer une note
  • Marquer une note comme terminée

Indice : Utilisez Firebase pour la gestion des données et Cloud Run pour déployer votre application.

Besoin d'aide sur Astro ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Quelle est la première étape pour déployer Astro sur GCP?
La première étape consiste à créer un compte Google Cloud Platform (GCP) et à installer le SDK de commande gcloud.
Comment puis-je configurer les permissions nécessaires pour déployer Astro?
Pour configurer les permissions, vous devez utiliser le rôle GCP 'Project Owner' sur votre projet ou 'Cloud Functions Developer' si vous préférez un accès plus restreint.
Quelles sont les options de déploiement disponibles pour Astro sur GCP?
Astro peut être déployé sur Google Cloud Run, qui permet de créer des applications serverless et scalables, ou bien sur Google App Engine pour des applications web et mobiles.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.