Instalando Odoo con Docker

Gustavo Orrillo
- 07/03/2022 - 2 min. de lectura


Docker es una plataforma abierta que permite desarrollar, distribuir y ejecutar aplicaciones. Separa la aplicación de la infraestructura que se necesita para correrla. El problema que tenemos en este momento es, necesitamos que cada desarrollador tenga la misma infraestructura de desarrollo para que se evite el problema de "esto corre en mi máquina y en el server de test solo va a correr los años bisiestos". Lo que se necesita es que dicha infraestructura sea común y replicable a lo largo de todo un equipo de desarrollo, con el fin de permitir el crecimiento de dicho equipo.

En este post no vamos a detallar como funciona Docker ni cuales son sus componentes. Simplemente vamos a instalar en un server Ubuntu gracias a Docker, Odoo. Y lo vamos a ejecutar. Posteriormente vamos a hacer que se ejecute Odoo desde la línea de comando y se hagan las modificaciones necesarias para que se pueda utilizar el debugger mientras se utiliza Odoo.

El primer paso es asegurarnos que docker-compose está presente, para ello se ejecuta el siguiente comando:

docker-compose -version


Seguidamente, debemos definir el archivo donde docker-compose.yml donde se configuran cada uno de los containers que se utilizarán en el proyecto:

version: '3.1'
services:
    odoo:
        image: odoo:15.0
        env_file: .env
        depends_on:
            - postgres
        ports:
            - "8069:8069"
        volumes:
            - data:/var/lib/odoo             - ./external-addons:/odoo/external-addons
    postgres:
        image: postgres:13
        env_file: .env
        volumes:
            - db:/var/lib/postgresql/data/pgdata
volumes:
    data:
    db:

Junto con un archivo de environment (.env) donde se definirán las diferentes variables de ambiente

# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=password_for_userxxx

Si quieren saber como generar un password fuerte y aleatorio, solo tienen que hacer desde la línea de comando 

openssl rand -base64 30


El archivo docker-compose.yml define dos servicios: uno es Odoo que es el que corre la aplicación, el segundo es postgres que corre la base de datos PostgreSQL. El servicio odoo expone el puerto 8069 y ambos servicios utilizan volumenes que almacenan datos por fuera de los containers. Ambos servicios utilizan variables de ambiente que son definidas en el archivo .env.

Luego de definir ambos archivos, procedemos a ejecutar el docker-compose. La primera vez que se ejecuta se realizará el build de los containers y luego estarán ambas aplicaciones corriendo:


Uno puede comprobar la ejecución de ambos containers haciendo un docker ps

docker ps


Donde vemos que hay dos containers ejecutandose, uno es odoo15_odoo_1 y el otro es odoo15_postgres_1. Supongamos que queremos realizar comandos de SQL con psql contra el container de PostgreSQL


Y si queremos comprobar que Odoo se está ejecutando



Y si queremos comprobar que Odoo se está ejecutando, podemos probar con el navegador:



Temas pendientes

Hay unos cuantos temas que tengo pendiente con Docker. Por lo pronto como administrar el archivo de configuración de Odoo, la actualización de Odoo (se está instalando con el paquete de Debian provisto por Odoo), como agregar módulos customizados, como instalar la localización argentina (para tener un Docker con la localización argentina) y por último como utilizar el debugger de Python mientras utilizo Odoo. No nos olvidemos que Docker se puede utilizar tanto para desarrollo como para el ambiente de producción.  


Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.