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 Research and Development Team
Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.
Articles connexes
Intégration d'Allegro Marketplace avec Odoo : la principale plateforme de commerce électronique de Pologne
Guide complet d'intégration du marché Allegro avec Odoo ERP couvrant la configuration de l'API REST, Allegro Smart, les enchères et l'expédition pour le commerce électronique polonais.
Automatisation des comptes fournisseurs avec Odoo : de la facture au paiement
Automatisez les comptes créditeurs dans Odoo, depuis la capture des factures jusqu'à l'exécution du paiement en passant par le flux de travail d'approbation. Réduisez les coûts de traitement et éliminez les pénalités de retard.
Comment choisir le bon CRM pour votre entreprise en 2026
A complete guide to selecting the right CRM platform in 2026, comparing Odoo CRM, Salesforce, HubSpot, GoHighLevel, and Zoho across features, pricing, scalability, and industry fit.