Instalación y configuración base de Odoo mediante docker-compose

Odoo es un ERP y CRM desarrollado por empresa belga Odoo S.A, según la definición de la propia empresa, es una alternativa a los productos como SAP ERP y Microsoft Dynamics.

Está disponible en 2 versiones, una “comunitaria” de código libre / abierto bajo licencia LGPLv3 y otra versión empresarial bajo licencia comercial que complementa las características y funcionalidades de la edición comunitaria.

En este artículo vamos a instalar la versión comunitaria, la instalaremos haciendo uso de las imágenes Docker oficiales que se encuentran en Docker Hub. Odoo requiere de una base de datos en Postgresql, también usaremos las imágenes en Docker Hub.

Para ejecutar y configurar la ejecución de los 2 contenedores necesarios utilizaremos docker-compose.

Creación fichero configuración de Docker compose

Como paso previo a la creación del fichero de configuración para Docker compose, vamos a ver la configuración necesaria para cada uno de los contenedores: Postgresql y de Odoo.

Configuración contenedor Postgresql

Es necesario definir al menos las variables de entorno que indican la base de datos (postgres) el usuario (odoo) y la clave, para el ejemplo usaremos el mismo valor que el usuario (odoo). También definiremos la variables PGDATA.

Con esto tendríamos lo imprescindible para el contenedor de Postgres, pero para posibles actualizaciones futuras también es recomendable definir un volumen donde ubicar el directorio de datos de postgres, la imagen lDocker lo tiene definido en el directorio: /var/lib/postgresql/data

Variables de entorno:

 - POSTGRES_DB=postgres
 - POSTGRES_PASSWORD=odoo
 - POSTGRES_USER=odoo
 - PGDATA=/var/lib/postgresql/data/pgdata

Volúmenes

odoo-db-data:/var/lib/postgresql/data

Configuración contenedor Odoo

Para acceder a Odoo tendremos que redirigir el puerto 8069 del contenedor en el host donde esté ejecutándose Docker, usaremos en el host el mismo puerto.

ports:      
    - "8069:8069"

Volúmenes

A nivel de datos tenemos que definir 3 volúmenes, para los siguientes directorio del contenedor

  • /etc/odoo
  • /mnt/extra-addons
  • /var/lib/odoo

Los dos primeros los crearemos como volúmenes de tipo bind, ubicándolos en el directorio del host /srv/odoo:

# mkdir -p /srv/odoo/config
# mkdir -p /srv/odoo/addons

Creamos el fichero docker-compose.yml con el siguiente contenido:

version: '3'
services:
  web:
    image: odoo:latest
    depends_on:
      - db
    ports:
      - "8069:8069"
    volumes:
      - odoo-web-data:/var/lib/odoo
      - /srv/odoo/config:/etc/odoo
      - /srv/odoo/addons:/mnt/extra-addons
  db:
    image: postgres:latest
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data
volumes:
  odoo-web-data:
  odoo-db-data:

Inicio de los contenedores

Ejecutaremos el comando docker-compuse up, que iniciará los contenedores mostrando las trazas de logs:

Creating network "odoo_default" with the default driver
Creating volume "odoo_odoo-web-data" with default driver
Creating volume "odoo_odoo-db-data" with default driver
Pulling db (postgres:latest)...
...
db_1   | 2020-11-08 11:17:17.340 UTC [1] LOG:  starting PostgreSQL 13.0 (Debian 13.0-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
db_1   | 2020-11-08 11:17:17.340 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1   | 2020-11-08 11:17:17.340 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1   | 2020-11-08 11:17:17.342 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1   | 2020-11-08 11:17:17.347 UTC [56] LOG:  database system was shut down at 2020-11-08 11:17:17 UTC
db_1   | 2020-11-08 11:17:17.350 UTC [1] LOG:  database system is ready to accept connections
web_1  | 2020-11-08 11:17:18,417 1 INFO ? odoo: Odoo version 14.0-20201026 
web_1  | 2020-11-08 11:17:18,417 1 INFO ? odoo: addons paths: ['/usr/lib/python3/dist-packages/odoo/addons', '/var/lib/odoo/.local/share/Odoo/addons/14.0'] 
web_1  | 2020-11-08 11:17:18,417 1 INFO ? odoo: database: odoo@db:5432 
web_1  | 2020-11-08 11:17:18,565 1 INFO ? odoo.addons.base.models.ir_actions_report: Will use the Wkhtmltopdf binary at /usr/local/bin/wkhtmltopdf 
web_1  | 2020-11-08 11:17:18,649 1 INFO ? odoo.service.server: HTTP service (werkzeug) running on 667fa5fdc150:8069 

Nos conectamos a la página de Odoo, mediante un navegador en la dirección http://localhost:8069, accediendo a la página de configuración de Odoo

Una vez visto que se inician los contenedores de forma correcto, podremos para el docker compose, pulsando Ctrl+C

^CGracefully stopping... (press Ctrl+C again to force)
Stopping odoo_web_1 ... done
Stopping odoo_db_1  ... done

Y lo iniciamos en modo background

docker-compose up -d

Mostrando que se han iniciado:

Starting odoo_db_1 ... done
Starting odoo_web_1 ... done

Configuración básica de Odoo

Nos conectamos de nuevo a la página de Odoo: http://localhost:8069 y rellenamos los datos, cambiando la clave maestra (Master Password) por una propia y asignando el resto de datos, en nuestro caso también hemos marcado la opción de crearnos datos de desmostración (Demo data)

Una vez completado pulsarémos el botón Create database, tras finalizar la creación de la base de datos nos mostrará la página con todas las aplicaciones disponibles:

Donde iremos seleccionando y configuración cada una de las aplicaciones necesarias, estás serán a criterio de cada uno.

Referencias