Integrations
MinIO
Vue d'ensemble
MinIO est un serveur de stockage objet compatible avec l'API Amazon S3. Products Manager l'utilise comme alternative locale à S3 en environnement de développement et de staging, sans dépendance à un service cloud externe.
En production, OVH Object Storage (compatible S3) remplace MinIO avec exactement la même interface applicative — seules les variables d'environnement changent. Cette compatibilité garantit que le code applicatif n'a pas à distinguer l'environnement : tout passe par le client S3 unifié.
MinIO est utilisé dans Products Manager pour stocker :
- Les images produits (originales et variantes redimensionnées)
- Les fichiers d'import (CSV, Excel uploadés par les fournisseurs)
- Les exports générés (flux produits, rapports)
- Les assets média (fiches techniques, documents)
Lancer MinIO avec Docker Compose
Ajoutez le service MinIO à votre docker-compose.yml :
services:
minio:
image: minio/minio:latest
container_name: pm_minio
command: server /data --console-address ":9001"
ports:
- "9000:9000" # API S3
- "9001:9001" # Console web
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio_data:/data
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
volumes:
minio_data:
Démarrage :
docker compose up -d minio
Variables d'environnement
Configurez ces variables dans votre fichier .env local :
MINIO_ENDPOINT=http://localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=products-manager
MINIO_USE_SSL=false
| Variable | Description | Exemple |
|---|---|---|
MINIO_ENDPOINT | URL du serveur MinIO (sans trailing slash) | http://localhost:9000 |
MINIO_ACCESS_KEY | Clé d'accès (identifiant) | minioadmin |
MINIO_SECRET_KEY | Clé secrète | minioadmin |
MINIO_BUCKET | Nom du bucket principal | products-manager |
MINIO_USE_SSL | true si HTTPS activé | false en dev |
Interface web MinIO (Console)
La console d'administration MinIO est accessible à l'adresse :
http://localhost:9001
Identifiants par défaut (Docker Compose) :
- Login :
minioadmin - Mot de passe :
minioadmin
Depuis la console, vous pouvez :
- Créer et gérer les buckets
- Parcourir les fichiers stockés
- Gérer les politiques d'accès (ACL)
- Créer des clés d'accès supplémentaires
- Monitorer l'utilisation du stockage
Initialisation du bucket
Au premier démarrage, le bucket products-manager n'existe pas encore. Deux options pour l'initialiser :
Option 1 — Via la console web
- Connectez-vous sur
http://localhost:9001 - Cliquez sur Buckets > Create Bucket
- Nommez le bucket
products-manager - Activez le mode Public si vous avez besoin d'URLs publiques (images produits)
Option 2 — Via MinIO Client (mc)
# Installer mc
brew install minio/stable/mc # macOS
# ou
curl https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc && chmod +x /usr/local/bin/mc
# Configurer l'alias
mc alias set local http://localhost:9000 minioadmin minioadmin
# Créer le bucket
mc mb local/products-manager
# Optionnel : rendre le bucket public (lecture)
mc anonymous set public local/products-manager
Option 3 — Script d'initialisation automatique
Products Manager inclut une commande de management pour initialiser le bucket au démarrage :
python manage.py init_storage
Cette commande crée le bucket s'il n'existe pas et configure les politiques d'accès requises.
Différences avec S3 en production
En production, Products Manager utilise OVH Object Storage (compatible S3). Quelques différences à connaître :
| Aspect | MinIO (dev) | OVH S3 (prod) |
|---|---|---|
| SSL | Désactivé (MINIO_USE_SSL=false) | Obligatoire (HTTPS) |
| Signed URLs | Générées localement, expiration courte | Signées avec les credentials OVH, TTL configurable |
| ACL public-read | Configuré via mc anonymous set public | Configuré via la politique bucket OVH |
| Endpoint | http://localhost:9000 | https://s3.<region>.perf.cloud.ovh.net |
| Credentials | minioadmin / minioadmin | Clés OVH S3 dédiées |
Les URLs d'objets suivent le même format dans les deux environnements : <endpoint>/<bucket>/<path/to/file>. Les signed URLs sont transparentes pour l'application.
Migration dev vers prod
Pour passer de MinIO (dev) aux variables S3 OVH (production), remplacez dans vos variables d'environnement :
# Développement (MinIO)
MINIO_ENDPOINT=http://localhost:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=products-manager
MINIO_USE_SSL=false
# Production (OVH S3)
MINIO_ENDPOINT=https://s3.gra.perf.cloud.ovh.net
MINIO_ACCESS_KEY=<ovh_access_key>
MINIO_SECRET_KEY=<ovh_secret_key>
MINIO_BUCKET=products-manager-prod
MINIO_USE_SSL=true
Aucun changement de code n'est nécessaire. Le client S3 interne de Products Manager utilise ces variables de manière transparente.
Dépannage
Le bucket n'est pas créé automatiquement
Products Manager ne crée pas le bucket à la volée. Exécutez python manage.py init_storage ou créez le bucket manuellement via la console ou mc.
Access denied (403) sur les fichiers
- Vérifiez que les credentials
MINIO_ACCESS_KEY/MINIO_SECRET_KEYsont corrects. - Si vous tentez d'accéder à un fichier public, vérifiez que le bucket est bien configuré en lecture publique (
mc anonymous set public local/products-manager). - En mode développement, certains services (Celery workers, conteneurs Docker) peuvent utiliser
http://minio:9000plutôt quehttp://localhost:9000— vérifiez queMINIO_ENDPOINTreflète le nom du service Docker si l'accès se fait depuis un conteneur.
Erreur SSL en développement
Assurez-vous que MINIO_USE_SSL=false est bien défini. Si le client tente une connexion HTTPS sur le port 9000 sans certificat, la connexion échouera.
Données perdues après redémarrage Docker
Vérifiez que le volume minio_data est bien déclaré dans docker-compose.yml. Si MinIO est lancé sans volume persistant, toutes les données sont perdues à chaque docker compose down.