Odoo · Docker · Guía práctica
Monta un entorno Odoo 19 reproducible con Docker Compose: PostgreSQL, Odoo, proxy inverso y volúmenes para tus módulos custom.
Introducción
¿Por qué Docker para Odoo?
Instalar Odoo en un servidor Linux «a mano» implica gestionar Python, dependencias del sistema, PostgreSQL, wkhtmltopdf, permisos de archivos y actualizaciones. Con Docker encapsulas todo eso en contenedores versionados: el mismo docker-compose.yml funciona en tu portátil y en el VPS de producción.
Ventajas clave
- Entorno idéntico para todo el equipo
- Aislamiento de PostgreSQL y Odoo
- Actualizar Odoo = reconstruir la imagen
- Módulos custom montados como volumen sin tocar el contenedor
Arquitectura
Componentes del stack
| Servicio | Función | Puerto |
|---|---|---|
| postgres | Base de datos PostgreSQL 15 | interno |
| odoo | Servidor Odoo 19 (Python + ORM) | 8069 / 8072 |
| nginx | Proxy inverso, SSL y dominio | 80 / 443 |
En desarrollo puedes exponer Odoo directamente en localhost:8069. En producción, nginx termina TLS y reenvía el tráfico al contenedor Odoo.
Paso 1
Requisitos previos
- Docker 24+ y Docker Compose v2
- Git para clonar el repositorio
- Al menos 4 GB RAM libres (8 GB recomendado)
- Linux, macOS o WSL2 en Windows
# Verificar instalación
docker --version
docker compose version
Paso 2
Estructura del proyecto
proyecto/
├── docker/
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── .env.example
│ └── entrypoint.sh
├── odoo/
│ ├── addons/custom/ # Tus módulos
│ └── config/
└── Makefile # Atajos (make dev, make log-odoo)
Paso 3
Configurar variables de entorno
Copia el fichero de ejemplo y ajusta contraseñas y dominio:
cp docker/.env.example docker/.env
Variables esenciales en docker/.env:
| Variable | Descripción |
|---|---|
DB_PASSWORD | Contraseña PostgreSQL (mín. 12 caracteres) |
ADMIN_PASSWD | Contraseña del gestor de bases de datos Odoo |
DOMAIN | Dominio público (producción) |
WORKERS | Workers Odoo (0 en dev, 2–4 en prod) |
ADDONS_PATH | Rutas de addons dentro del contenedor |
docker/.env a Git. Usa contraseñas fuertes en producción y LIST_DB=False.
Paso 4
Construir y arrancar
El Dockerfile clona Odoo 19 desde GitHub, crea un venv Python, instala dependencias y configura el usuario odoo:
# Desarrollo (interactivo)
make dev
# O manualmente
cd docker
docker compose up --build -d
El entrypoint.sh genera odoo.conf desde las variables de entorno, espera a que PostgreSQL esté listo y lanza odoo-bin.
Paso 5
Primer acceso
- Abre http://localhost:8069
- Crea una base de datos (nombre, email, contraseña admin, idioma)
- Instala los módulos que necesites desde Aplicaciones
Tus módulos custom en odoo/addons/custom/ aparecen automáticamente gracias al volumen montado en el contenedor.
Operaciones
Comandos útiles del día a día
| Comando | Acción |
|---|---|
make log-odoo | Ver logs de Odoo |
make update MODULE=nombre | Actualizar un módulo (-u) |
make backup | Copia de seguridad de la BD |
make status | Estado de los contenedores |
docker compose down && docker compose up --build -d | Reconstruir tras cambios en Dockerfile |
Producción
Checklist antes de desplegar
PROXY_MODE=Truedetrás de nginxLIST_DB=Falsepara ocultar el gestor de BD- Certificado SSL (Let's Encrypt / Certbot)
WORKERSsegún CPUs disponibles- Backups automáticos de PostgreSQL
- Monitorización (Grafana/Prometheus opcional)
💡 Consejo
make prod para el despliegue guiado en producción y make migrate tras actualizar el repositorio.Resumen
Con Docker tienes Odoo 19 listo en minutos, módulos custom montados como volumen y un flujo de despliegue repetible. En el siguiente artículo veremos cómo crear tu primer módulo siguiendo las convenciones de la comunidad Odoo.