Ir al contenido

Cómo instalar Odoo 19 con Docker: guía paso a paso

Docker · PostgreSQL · Nginx — entorno reproducible para desarrollo y producción
16 de junio de 2026 por
Cómo instalar Odoo 19 con Docker: guía paso a paso
Aitor Atencia

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.

Logo Odoo Logo Docker
Odoo 19 + Docker: la combinación que uso en desarrollo y producción.

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

PostgreSQL
PostgreSQL 15 como base de datos persistente en volumen Docker.
ServicioFunciónPuerto
postgresBase de datos PostgreSQL 15interno
odooServidor Odoo 19 (Python + ORM)8069 / 8072
nginxProxy inverso, SSL y dominio80 / 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

Diagrama de contenedores Docker
Cada servicio corre en su propio contenedor, conectados por una red interna.
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:

VariableDescripción
DB_PASSWORDContraseña PostgreSQL (mín. 12 caracteres)
ADMIN_PASSWDContraseña del gestor de bases de datos Odoo
DOMAINDominio público (producción)
WORKERSWorkers Odoo (0 en dev, 2–4 en prod)
ADDONS_PATHRutas de addons dentro del contenedor

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.

Interfaz de Odoo
Tras el primer arranque, crea tu base de datos desde el asistente web.

Paso 5

Primer acceso

  1. Abre http://localhost:8069
  2. Crea una base de datos (nombre, email, contraseña admin, idioma)
  3. 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

ComandoAcción
make log-odooVer logs de Odoo
make update MODULE=nombreActualizar un módulo (-u)
make backupCopia de seguridad de la BD
make statusEstado de los contenedores
docker compose down && docker compose up --build -dReconstruir tras cambios en Dockerfile

Producción

Checklist antes de desplegar

  • PROXY_MODE=True detrás de nginx
  • LIST_DB=False para ocultar el gestor de BD
  • Certificado SSL (Let's Encrypt / Certbot)
  • WORKERS según CPUs disponibles
  • Backups automáticos de PostgreSQL
  • Monitorización (Grafana/Prometheus opcional)

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.

en Odoo
sudo() en Odoo: cuándo sí y cuándo nunca
Auditoría de usos peligrosos en controladores, computes y crons