portfolio-website/test
2025-10-02 16:54:31 +02:00

83 lines
2.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Parfait 👌 je vois ton `docker-compose.yml` : là tu fais tourner ton **dev server Vite** dans un conteneur, ce qui explique tes 14s de LCP/FCP.
En prod, il faut **builder une image optimisée**, puis la servir avec **Nginx** (ou Caddy) plutôt quavec `npm run dev`.
---
### ✅ Version corrigée pour la prod
Voici un exemple de `docker-compose.yml` adapté :
```yaml
version: '3.8'
services:
react_app:
restart: unless-stopped
build:
context: .
dockerfile: Dockerfile
container_name: react_app
labels:
- "traefik.enable=true"
- "traefik.http.routers.react_app.rule=Host(`alexandre-pommier.com`)"
- "traefik.http.routers.react_app.entrypoints=https"
- "traefik.http.routers.react_app.tls=true"
- "traefik.http.services.react_app.loadbalancer.server.port=80"
networks:
- react
networks:
react:
external: true
```
Et tu ajoutes un **Dockerfile multi-stage** à la racine de ton projet :
```dockerfile
# Étape build
FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install --frozen-lockfile
COPY . .
RUN npm run build
# Étape serve (nginx)
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```
---
### ⚡️ Explication
* **`npm run build`** → génère des fichiers statiques optimisés dans `/app/dist`.
* **Nginx** → sert ces fichiers (beaucoup plus rapide que `vite dev`).
* **Traefik** → envoie le trafic vers ton conteneur (port `80` interne, pas besoin de `8080`).
* Tu peux ajouter un fichier `nginx.conf` custom si tu veux gérer le cache, gzip/brotli, etc.
---
### 🚀 Commandes
1. Construis limage :
```bash
docker compose build
```
2. Lance-la :
```bash
docker compose up -d
```
Ton site sera servi en **mode prod optimisé** avec un LCP/FCP qui devrait tomber à ~12 secondes 🎯
---
👉 Veux-tu que je tajoute aussi un **nginx.conf optimisé** (cache, compression, HTTP/2 push) pour booster encore plus les Core Web Vitals ?