# 🔧 Fix Docker Proxy Timeout

## 🚨 Problème Identifié

Docker est configuré avec un proxy qui timeout lors du push vers Scaleway :

```
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
```

Erreur lors du push :
```
proxyconnect tcp: dial tcp 192.168.65.1:3128: i/o timeout
```

## ✅ Solution 1 : Désactiver le Proxy (Recommandé)

### Sur Docker Desktop for Mac

1. **Ouvrir Docker Desktop**
2. **Settings (⚙️)** → **Resources** → **Proxies**
3. **Décocher "Manual proxy configuration"** ou mettre en "No proxy"
4. **Apply & Restart**

### Vérification

```bash
# Après redémarrage Docker
docker info | grep -i proxy

# Devrait afficher "No Proxy" ou rien
```

## ✅ Solution 2 : Ajouter Scaleway au No Proxy

Si vous avez besoin du proxy pour d'autres registries :

### Sur Docker Desktop for Mac

1. **Settings (⚙️)** → **Resources** → **Proxies**
2. Dans **"Bypass for these hosts & domains"**, ajouter :
   ```
   *.scw.cloud
   rg.fr-par.scw.cloud
   scw-reg-prd-fr-par-distribution.s3.fr-par.scw.cloud
   ```
3. **Apply & Restart**

## ✅ Solution 3 : Configuration Manuelle (Avancé)

### Éditer le fichier de config Docker daemon

**Fichier** : `~/.docker/daemon.json` (créer si inexistant)

```json
{
  "proxies": {
    "http-proxy": "",
    "https-proxy": "",
    "no-proxy": "*.scw.cloud,*.docker.internal,localhost,127.0.0.1"
  }
}
```

**Redémarrer Docker** :
```bash
# Via Docker Desktop menu → Restart
# Ou kill/restart le daemon
```

## 🧪 Test de la Solution

```bash
# 1. Vérifier que le proxy est désactivé ou contourne Scaleway
docker info | grep -i proxy

# 2. Essayer un push de test
docker tag xpeditis20-backend:latest rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:test
docker push rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:test

# Devrait afficher :
# ✅ Pushed
# ✅ test: digest: sha256:... size: ...
```

## 🔍 Comprendre le Problème

Le proxy `http.docker.internal:3128` était configuré mais :
- ❌ Ne répond pas (timeout)
- ❌ Bloque l'accès à Scaleway S3 (`scw-reg-prd-fr-par-distribution.s3.fr-par.scw.cloud`)
- ❌ Cause des timeouts I/O lors du push des layers Docker

**Symptômes** :
```
15826890db13: Pushed         ✅ Layer pousse OK
1ea93cfbb3c8: Pushed         ✅ Layer pousse OK
...
Head "https://scw-reg-prd-fr-par-distribution.s3.fr-par.scw.cloud/...":
proxyconnect tcp: dial tcp 192.168.65.1:3128: i/o timeout  ❌ Timeout au moment du manifest
```

Les layers individuels passent, mais le **manifest final** (HEAD request) timeout via le proxy.

## 📊 Comparaison

| Configuration | Résultat |
|---------------|----------|
| Proxy activé (`http.docker.internal:3128`) | ❌ Timeout vers Scaleway S3 |
| Proxy désactivé | ✅ Push direct vers Scaleway |
| No Proxy avec `*.scw.cloud` | ✅ Bypass proxy pour Scaleway |

## ⚠️ Important pour CI/CD

**GitHub Actions n'a PAS ce problème** car les runners GitHub n'utilisent pas votre proxy local.

Donc :
- ❌ Push local peut échouer (proxy)
- ✅ CI/CD push fonctionnera (pas de proxy)

**Recommandation** : Désactiver le proxy localement pour le développement, ou laisser uniquement la CI/CD push les images.

## 🎯 Solution Rapide (Temporaire)

Si vous ne voulez pas toucher aux settings Docker :

```bash
# Désactiver proxy pour une commande
export HTTP_PROXY=""
export HTTPS_PROXY=""
export http_proxy=""
export https_proxy=""

docker push rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:preprod
```

**Limitation** : Ne fonctionne pas car le proxy est configuré au niveau du Docker daemon, pas au niveau de la session shell.

## ✅ Checklist de Fix

- [ ] Ouvrir Docker Desktop Settings
- [ ] Aller dans Resources → Proxies
- [ ] Désactiver "Manual proxy configuration" OU ajouter `*.scw.cloud` au bypass
- [ ] Apply & Restart Docker
- [ ] Vérifier : `docker info | grep -i proxy` (devrait être vide)
- [ ] Test push : `docker push rg.fr-par.scw.cloud/weworkstudio/xpeditis-backend:test`
- [ ] ✅ Si push réussit, problème résolu !

---

**Date** : 2025-11-19
**Impact** : 🔴 Critique - Bloque push local vers Scaleway
**Fix** : ⚡ Rapide - 2 min via Docker Desktop settings
