Construisez votre site Astro avec Docker
Docker est un outil permettant de créer, de déployer et d’exécuter des applications à l’aide de conteneurs.
Les images et les conteneurs Docker peuvent être déployés sur de nombreuses plateformes différentes, comme AWS, Azure et Google Cloud. Cette méthode ne couvre pas le déploiement de votre site sur une plateforme spécifique, mais vous montre comment configurer Docker pour votre projet.
Prérequis
Titre de la section Prérequis- Docker installé sur votre machine locale. Vous pouvez trouver les instructions d’installation pour votre système d’exploitation ici.
- Un fichier Docker dans votre projet. Vous pouvez en savoir plus sur les Dockerfiles ici et utiliser les Dockerfiles de la section suivante comme point de départ.
Création d’un Dockerfile
Titre de la section Création d’un DockerfileCréez un fichier appelé Dockerfile
dans le répertoire racine de votre projet. Ce fichier contient les instructions pour construire votre site, qui varieront en fonction de vos besoins. Ce guide ne peut pas montrer toutes les options possibles mais vous donnera des points de départ pour SSR et le mode statique.
Si vous utilisez un autre gestionnaire de paquets que npm, vous devrez ajuster les commandes en conséquence.
Ce fichier Docker va construire votre site et le servir en utilisant Node.js sur le port 4321
et nécessite donc l’adaptateur Node installé dans votre projet Astro.
Il ne s’agit que d’exemples de Dockerfiles. Vous pouvez les adapter à vos besoins. Par exemple, vous pouvez utiliser une autre image, comme node:lts-alpine
:
Ajouter un fichier .dockerignore
Titre de la section Ajouter un fichier .dockerignoreAjouter un fichier .dockerignore
à votre projet est une bonne pratique. Ce fichier décrit quels fichiers ou dossiers doivent être ignorés dans les commandes COPY
ou ADD
de Docker, de manière très similaire à la façon dont .gitignore
fonctionne. Cela accélère le processus de construction et réduit la taille de l’image finale.
Ce fichier doit être placé dans le même répertoire que le Dockerfile
lui-même. Lisez la documentation .dockerignore
pour plus d’informations
Statique
Titre de la section StatiqueApache (httpd)
Titre de la section Apache (httpd)Le fichier Docker suivant construira votre site et le servira en utilisant Apache htppd sur le port 80
avec la configuration par défaut.
Utilisez cette approche pour les sites web simples qui ne nécessitent pas de configuration particulière. Pour les sites plus complexes, il est recommandé d’utiliser une configuration personnalisée, soit dans Apache, soit dans NGINX.
Afin de construire le fichier Docker ci-dessus, vous aurez également besoin de créer un fichier de configuration pour NGINX. Créez un dossier appelé nginx
dans le répertoire racine de votre projet et créez un fichier appelé nginx.conf
à l’intérieur.
Construction en plusieurs étapes (à l’aide de SSR)
Titre de la section Construction en plusieurs étapes (à l’aide de SSR)Voici un exemple de fichier Docker plus avancé qui, grâce à multi-stage builds de Docker, optimise le processus de construction de votre site en ne réinstallant pas les dépendances npm lorsque seul le code source change. Cela peut réduire le temps de construction de quelques minutes, en fonction de la taille de vos dépendances.
Méthode
Titre de la section Méthode-
Construisez votre conteneur en exécutant la commande suivante dans le répertoire racine de votre projet. Utilisez n’importe quel nom pour
<votre-image-astro-name>
:Vous obtiendrez ainsi une image que vous pourrez exécuter localement ou déployer sur la plateforme de votre choix.
-
Pour exécuter votre image en tant que conteneur local, utilisez la commande suivante.
Remplacez
<local-port>
par un port ouvert sur votre machine. Remplacez<container-port>
par le port exposé par votre conteneur Docker (4321
,80
, ou8080
dans les exemples ci-dessus).Vous devriez pouvoir accéder à votre site à
http://localhost:<port local>
. -
Maintenant que votre site web est construit et empaqueté avec succès dans un conteneur, vous pouvez le déployer vers un fournisseur de cloud. Voir le guide de déploiement Google Cloud pour un exemple, et la page Deployer votre app dans la documentation Docker.