Déploiement de Docker Odoo : configuration de conteneurs prêts pour la production
Docker est devenu la méthode de déploiement standard pour Odoo dans les environnements de production, avec plus de 10 millions d'images Odoo Docker extraites sur Docker Hub. Le déploiement conteneurisé fournit des environnements reproductibles, une mise à l'échelle facile, des sauvegardes simplifiées et une séparation nette entre les instances Odoo. Ce guide couvre une configuration complète de Docker Odoo prête pour la production.
Points clés à retenir
- Docker Compose orchestre Odoo, PostgreSQL et Nginx en tant que services connectés
- Les volumes persistants garantissent que les données survivent aux redémarrages et aux mises à jour des conteneurs
- Le proxy inverse Nginx gère la terminaison SSL, la mise en cache des fichiers statiques et l'équilibrage de charge
- Les sauvegardes automatisées protègent contre la perte de données avec une intervention manuelle minimale
Présentation de l'architecture
Un déploiement de production Odoo Docker se compose de trois services principaux :
- Serveur d'applications Odoo : Le conteneur Odoo exécutant le serveur Web et la logique de l'application
- Base de données PostgreSQL : Un conteneur de base de données dédié stockant toutes les données Odoo
- Proxy inverse Nginx : gère SSL, sert des fichiers statiques et envoie des requêtes proxy à Odoo
Les services facultatifs incluent Redis (pour la mise en cache et le stockage de session), un conteneur de sauvegarde (vidages de base de données automatisés) et la surveillance (Prometheus + Grafana).
Configuration de Docker Compose
La base du déploiement est un fichier docker-compose.yml définissant tous les services :
version: "3.8"
services:
odoo:
image: odoo:17.0
depends_on:
- db
ports:
- "8069:8069"
- "8072:8072"
volumes:
- odoo-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
environment:
- HOST=db
- PORT=5432
- USER=odoo
- PASSWORD=odoo_db_password
restart: unless-stopped
db:
image: postgres:16
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=odoo
- POSTGRES_PASSWORD=odoo_db_password
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- postgres-data:/var/lib/postgresql/data/pgdata
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
depends_on:
- odoo
restart: unless-stopped
volumes:
odoo-data:
postgres-data:
Fichier de configuration Odoo
Créez config/odoo.conf avec des paramètres optimisés pour la production :
[options]
addons_path = /mnt/extra-addons,/usr/lib/python3/dist-packages/odoo/addons
admin_passwd = your_strong_admin_password
db_host = db
db_port = 5432
db_user = odoo
db_password = odoo_db_password
db_name = production_db
dbfilter = ^production_db$
list_db = False
proxy_mode = True
workers = 4
max_cron_threads = 2
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_time_cpu = 600
limit_time_real = 1200
log_level = warn
Paramètres clés expliqués :
proxy_mode = True: requis lors de l'exécution derrière Nginx pour gérer correctement les en-têtes transférésworkers = 4: Nombre de processus de travail (règle générale : 2 travailleurs par cœur de processeur)max_cron_threads = 2: Threads dédiés aux actions planifiéeslist_db = False: empêche le référencement des bases de données sur la page de connexion (sécurité)dbfilter: restreint l'accès à une seule base de données
Configuration du proxy inverse Nginx
upstream odoo {
server odoo:8069;
}
upstream odoochat {
server odoo:8072;
}
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
client_max_body_size 200m;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
location /websocket {
proxy_pass http://odoochat;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://odoo;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
}
Stratégie de sauvegarde
Sauvegardes automatisées de la base de données
Créez un script de sauvegarde qui s'exécute quotidiennement via cron :
#!/bin/bash
BACKUP_DIR=/backups/odoo
DATE=$(date +%Y%m%d_%H%M%S)
docker exec odoo-db pg_dump -U odoo production_db | gzip > $BACKUP_DIR/odoo_$DATE.sql.gz
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
Sauvegarde du magasin de fichiers
Le magasin de fichiers Odoo (documents téléchargés, pièces jointes) réside dans le volume odoo-data. Sauvegardez-le avec la base de données :
docker run --rm -v odoo-data:/data -v /backups:/backup alpine \
tar czf /backup/odoo-filestore_$DATE.tar.gz /data
Renforcement de la sécurité
- Remplacez le
admin_passwdpar défaut dans odoo.conf par un mot de passe aléatoire fort - Définissez
list_db = Falsepour empêcher l'énumération de la base de données - Utilisez
dbfilterpour restreindre l'accès à la base de données à une seule base de données - Exécutez les conteneurs en tant qu'utilisateurs non root lorsque cela est possible
- Gardez les images Docker à jour avec les correctifs de sécurité
- Utilisez des secrets Docker ou des fichiers de variables d'environnement (pas de mots de passe en ligne)
- Restreindre l'accès au réseau de conteneurs à l'aide des réseaux Docker
Questions fréquemment posées
Q : Combien d'utilisateurs simultanés un seul conteneur Odoo peut-il gérer ?
Avec 4 travailleurs, un conteneur Odoo gère confortablement environ 20 à 30 utilisateurs simultanés. Pour une concurrence plus élevée, augmentez les Workers (limités par le CPU/RAM) ou déployez plusieurs conteneurs Odoo derrière un équilibreur de charge.
Q : Comment mettre à jour Odoo dans Docker ?
Extrayez la nouvelle image, arrêtez le conteneur actuel, exécutez la nouvelle image avec les volumes existants. Les volumes persistants conservent vos données et votre magasin de fichiers lors des mises à jour d'images.
Q : Dois-je utiliser l'image officielle Odoo Docker ou créer la mienne ?
L'image officielle fonctionne pour les déploiements standard. Créez une image personnalisée lorsque vous avez besoin de packages Python spécifiques, de dépendances système pour des modules personnalisés ou de modules de communauté préinstallés.
Q : Comment gérer Odoo Enterprise dans Docker ?
Odoo Enterprise n'est pas disponible en tant qu'image Docker publique. Montez le répertoire des modules complémentaires d'entreprise en tant que volume et référencez-le dans la configuration addons_path. Vous avez besoin d'un abonnement Odoo Enterprise valide.
Quelle est la prochaine étape
Le déploiement Docker vous offre un environnement de production Odoo reproductible, évolutif et maintenable. Commencez par cette configuration et ajustez le nombre de travailleurs, les limites de mémoire et la mise en cache en fonction de vos modèles d'utilisation.
Contactez ECOSIRE pour obtenir de l'aide au déploiement d'Odoo, ou explorez nos services d'assistance Odoo pour l'hébergement géré.
Publié par ECOSIRE – aider les entreprises à évoluer grâce à des solutions logicielles d'entreprise.
Rédigé par
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
Transformez votre entreprise avec Odoo ERP
Implémentation, personnalisation et assistance expertes d'Odoo pour rationaliser vos opérations.
Articles connexes
Segmentation client basée sur l'IA : du RFM au clustering prédictif
Découvrez comment l'IA transforme la segmentation client de l'analyse RFM statique au clustering prédictif dynamique. Guide d'implémentation avec Python, Odoo et données de retour sur investissement réel.
IA pour l'optimisation de la chaîne d'approvisionnement : visibilité, prédiction et automatisation
Transformez les opérations de la chaîne d'approvisionnement grâce à l'IA : détection de la demande, évaluation des risques des fournisseurs, optimisation des itinéraires, automatisation des entrepôts et prévision des perturbations. Guide 2026.
Stratégie de commerce électronique B2B : créer une entreprise de vente en gros en ligne en 2026
Maîtrisez le commerce électronique B2B avec des stratégies de prix de gros, de gestion des comptes, de conditions de crédit, de catalogues punchout et de configuration du portail Odoo B2B.