diff --git a/src/.dockerignore b/src/.dockerignore new file mode 100644 index 0000000..36ffc54 --- /dev/null +++ b/src/.dockerignore @@ -0,0 +1,8 @@ +node_modules +build +dist +.git +.gitignore +*.md +Dockerfile +docker-compose.yml \ No newline at end of file diff --git a/src/DockerFile b/src/DockerFile new file mode 100644 index 0000000..d9bde51 --- /dev/null +++ b/src/DockerFile @@ -0,0 +1,34 @@ +# syntax=docker/dockerfile:1 + +# Étape 1 : Construction +FROM node:18-alpine AS builder +WORKDIR /app + +# On copie uniquement les fichiers de dépendances en premier +COPY package*.json ./ + +# Utilisation de "npm ci" (plus rapide et strict que "npm install") +# Le paramètre --mount crée un cache temporaire uniquement pendant le build +RUN --mount=type=cache,target=/root/.npm npm ci + +# On copie le reste des sources +COPY . . + +# On lance la compilation +# Remplace "build" par la commande exacte de ton projet si nécessaire +RUN npm run build + +# Étape 2 : Serveur Nginx minimaliste +FROM nginx:alpine + +# On vide le dossier de base de Nginx pour éviter de garder des fichiers inutiles +RUN rm -rf /usr/share/nginx/html/* + +# On copie uniquement les fichiers compilés depuis l'étape 1 +# Attention : si tu utilises Vite, le dossier source sera /app/dist au lieu de /app/build +COPY --from=builder /app/build /usr/share/nginx/html + +EXPOSE 80 + +# Nginx se lance au premier plan +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file