Odoo con docker
Las imágenes de Odoo se actualizan de forma regular para que utilicen versiones recientes (se crea una nuevo paquete nightly de cada versión de Odoo cada noche). Tenga en cuenta que lo que se refiere a la actualización de una versión 13.0 20210101 a a la más reciente 13.0 20210301 (nótese el cambio de fecha entre versiones 13.0), ya que la migración de una versión 12.0 a otra 13.0 es un proceso mucho más complejo que requiere scripts de migración.(ver Odoo Enterprise Upgrade page o el proyecto comunitario community project los cuales manejan esos scripts).
Referencias rápidas
-
Maintained by: Odoo
-
Where to get help: the Docker Community Forums, the Docker Community Slack, or Stack Overflow
Etiquetas admitidas y los respectivos enlaces de Dockerfile
Referencia rápida (continuación)
-
Dónde presentar problemas: https://github.com/odoo/docker/issues
-
Detalles del artefacto de la imagen publicada: repo-info repo's
repos/odoo/
directory (history) (metadatos de la imagen, tamaño de la transferencia, etc.) -
Actualizaciones: official-images repo's
library/odoo
label
official-images repo'slibrary/odoo
file (history) -
Fuente de esta descripción: docs repo's
odoo/
directory (history)
¿Qué es Odoo?
Odoo, anteriormente conocido como OpenERP, es un conjunto de aplicaciones comerciales de código abierto escritas en Python y lanzadas bajo la licencia LGPL. Este conjunto de aplicaciones cubre todas las necesidades comerciales, desde el sitio web/comercio electrónico hasta la fabricación, el inventario y la contabilidad, todo perfectamente integrado. Es la primera vez que un editor de software logra alcanzar una cobertura tan funcional. Odoo es el software empresarial más instalado del mundo. Odoo es utilizado por 2.000.000 de usuarios en todo el mundo, desde empresas muy pequeñas (1 usuario) hasta empresas muy grandes (300 000 usuarios).
¿Cómo usar esta imagen?
Esta imagen requiere un servidor PostgreSQL en ejecución.
Iniciar un servidor PostgreSQL
$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13
Iniciar una instancia de Odoo
$ docker run -p 8069:8069 --name odoo --link db:db -t odoo
El alias del contenedor que ejecuta Postgres debe ser db para que Odoo pueda conectarse al servidor de Postgres.
Detener y reiniciar una instancia de Odoo
$ docker stop odoo
$ docker start -a odoo
Utilice volúmenes con nombre para conservar los datos
Cuando se crea el contenedor de Odoo como se describe arriba, el almacén de archivos de Odoo se crea dentro del contenedor. Si se elimina el contenedor, se pierde el almacén de archivos. La mejor forma de evitarlo es mediante el uso de un volumen con nombre de Docker.
$ docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo
Con el comando anterior, el volumen nombrado odoo-data
persistirá incluso si se elimina el contenedor y se puede reutilizar emitiendo el mismo comando.
La ruta /var/lib/odoo
utilizada como punto de montaje del volumen debe coincidir con el odoo data_dir
en el archivo de configuración o como parámetros CLI.
Tenga en cuenta que el mismo principio se aplica al contenedor de Postgresql y se puede usar un volumen con nombre para conservar la base de datos cuando se elimina el contenedor. Entonces, el contenedor de la base de datos podría iniciarse así (antes del contenedor odoo):
$ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13
Detener y reiniciar un servidor PostgreSQL
Cuando se reinicia un servidor PostgreSQL, las instancias de Odoo vinculadas a ese servidor también deben reiniciarse porque la dirección del servidor ha cambiado y, por lo tanto, el vínculo se rompe.
Reiniciar un servidor PostgreSQL no afecta las bases de datos creadas.
Ejecute Odoo con una configuración personalizada
El archivo de configuración predeterminado para el servidor (ubicado en /etc/odoo/odoo.conf
) se puede anular al inicio usando volúmenes. Suponga que tiene una configuración personalizada en /path/to/config/odoo.conf
, entonces
$ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo
Utilice esta plantilla de configuración para escribir su configuración personalizada, ya que ya establecimos algunos argumentos para ejecutar Odoo dentro de un contenedor Docker.
También puede especificar directamente los argumentos de Odoo en línea. Esos argumentos deben darse después de la palabra clave --
en la línea de comandos, de la siguiente manera
$ docker run -p 8069:8069 --name odoo --link db:db -t odoo -- --db-filter=odoo_db_.*
Montar complementos personalizados
Puede montar sus propios complementos de Odoo dentro del contenedor de Odoo, en/mnt/extra-addons
$ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo
Ejecute varias instancias de Odoo
$ docker run -p 8070:8069 --name odoo2 --link db:db -t odoo
$ docker run -p 8071:8069 --name odoo3 --link db:db -t odoo
Tenga en cuenta que para el uso simple de las funcionalidades de correos electrónicos e informes, cuando los puertos del host y del contenedor difieren (p. ej., 8070 y 8069), se debe configurar, en Odoo, Configuración->Parámetros->Parámetros del sistema (requiere características técnicas), web. base.url al puerto del contenedor (por ejemplo, 127.0.0.1:8069).
Variables de entorno
Modifique estas variables de entorno para conectarse fácilmente a un servidor de postgres:
HOST
: La dirección del servidor postgres. Si usó un contenedor de postgres, establezca el nombre del contenedor. El valor predeterminado esdb
.PORT
: El puerto que escucha el servidor de Postgres. El valor predeterminado es5432
.USER
: El rol de postgres con el que se conectará Odoo. Si usó un contenedor de postgres, establezca el mismo valor quePOSTGRES_USER
. El valor predeterminado esodoo
.PASSWORD
: La contraseña del rol de postgres con el que se conectará Odoo. Si usó un contenedor de postgres, establezca el mismo valor quePOSTGRES_PASSWORD
. El valor predeterminado esodoo
.
Ejemplos de composición de Docker
El archivo más simple docker-compose.yml
sería:
version: '3.1'
services:
web:
image: odoo:14.0
depends_on:
- db
ports:
- "8069:8069"
db:
image: postgres:13
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
Si las credenciales predeterminadas de postgres no le convienen, modifique las variables de entorno:
version: '3.1'
services:
web:
image: odoo:14.0
depends_on:
- mydb
ports:
- "8069:8069"
environment:
- HOST=mydb
- USER=odoo
- PASSWORD=myodoo
mydb:
image: postgres:13
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=myodoo
- POSTGRES_USER=odoo
Aquí hay un último ejemplo que le muestra cómo
- montar complementos personalizados ubicados en
./addons
- use un archivo de configuración personalizado ubicado en
.config/odoo.conf
- use volúmenes con nombre para el directorio de datos de Odoo y postgres
- use un
secrets
archivo llamadoodoo_pg_pass
que contenga la contraseña postgreql compartida por ambos servicios
version: '3.1'
services:
web:
image: odoo:14.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
environment:
- PASSWORD_FILE=/run/secrets/postgresql_password
secrets:
- postgresql_password
db:
image: postgres:13
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
secrets:
- postgresql_password
volumes:
odoo-web-data:
odoo-db-data:
secrets:
postgresql_password:
file: odoo_pg_pass
Para iniciar su instancia de Odoo, vaya al directorio del docker-compose.yml
archivo que creó a partir de los ejemplos anteriores y escriba:
docker-compose up -d
Cómo actualizar esta imagen
Las imágenes de Odoo se actualizan regularmente para que utilicen versiones recientes ( cada noche se crea una nueva versión de cada versión de Odoo ). Tenga en cuenta que lo que sigue es sobre la actualización de una versión anterior a la última proporcionada de la misma versión principal, ya que la actualización de una versión principal a otra es un proceso mucho más complejo que requiere scripts de migración elaborados (consulte la página de actualización de Odoo Enterprise o este proyecto comunitario que tiene como objetivo escribir esos guiones).
Supongamos que creó una base de datos a partir de una instancia de Odoo llamada old-odoo y desea acceder a esta base de datos desde una nueva instancia de Odoo llamada new-odoo, por ejemplo, porque acaba de descargar una imagen de Odoo más nueva.
De manera predeterminada, Odoo 14.0 usa un almacén de archivos (ubicado en /var/lib/odoo/filestore/) para los archivos adjuntos. Debe restaurar este almacén de archivos en su nueva instancia de Odoo ejecutando
$ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo
También puede simplemente evitar que Odoo use el almacén de archivos configurando el parámetro del sistema ir_attachment.location
en db-storage
Configuración-> Parámetros-> Parámetros del sistema (requiere características técnicas).