diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5d2afca --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +# Docker-specific +Dockerfile +docker-compose.yml + +# build output +dist/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e81b7b4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# ---- Étape 1 : Build ---- +# On utilise une image Node.js (version Alpine pour sa légèreté) pour construire le projet. +# L'alias "builder" nous permettra de réutiliser son contenu plus tard. +FROM node:20-alpine AS builder + +# On définit le répertoire de travail dans le conteneur. +WORKDIR /app + +# On copie les fichiers de dépendances. +COPY package*.json ./ + +# On installe les dépendances du projet. +RUN npm install + +# On copie tout le reste du code source. +COPY . . + +# On lance la commande de build d'Astro. +RUN npm run build + +# ---- Étape 2 : Serve ---- +# On part d'une image Nginx très légère pour servir nos fichiers statiques. +FROM nginx:stable-alpine + +# On copie uniquement le résultat du build (le dossier /app/dist) de l'étape "builder" +# dans le dossier par défaut de Nginx qui sert les pages web. +COPY --from=builder /app/dist /usr/share/nginx/html + +# On expose le port 80 pour pouvoir accéder au serveur Nginx depuis l'extérieur du conteneur. +EXPOSE 80 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..f47e0df --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +services: + # Le nom de notre service, vous pouvez l'appeler comme vous voulez. + sweet-astro-site: + # Indique à Docker Compose de construire l'image à partir du Dockerfile + # présent dans le répertoire courant ('.'). + build: . + # Mappe le port 8080 de la machine hôte (votre Pi) au port 80 du conteneur (Nginx). + ports: + - "80:80" + # Redémarre automatiquement le conteneur s'il s'arrête (ex: après un redémarrage du Pi). + restart: unless-stopped \ No newline at end of file