Instalación de Odoo 14 con docker-compose
Plantilla de proyecto Odoo con Docker
11 marzo, 2021 por
Instalación de Odoo 14 con docker-compose
Daniel Moreno
| No comments yet

Existe otra forma de instalar Odoo 14, y es mediante Docker, creando contenedores para Odoo y para su base de datos Postgres con docker-compose, si eres nuevo con docker, este artículo te ahorrará mucho tiempo, y aprenderás a realizar la configuración de docker-compose.yaml desde cero para Odoo 14. Además, te compartiré una plantilla que uso de forma regular para nuevos proyectos con Odoo.

¿Por qué usar docker en Odoo?

Cuando creo un nuevo proyecto en Odoo, de forma regular necesito realizar instalaciones de librerías y realizar configuraciones especiales en el entorno de desarrollo, además de tener proyectos de Odoo en diferentes versiones, las cuales deben coexistir. Con docker puedo crear un archivo de configuración que permita preparar un contenedor que contenga todas las dependencias y configuraciones que el proyecto necesite. A la vez, puedo compartir esta configuración con otros desarrolladores, y estos podrán levantar el proyecto sin configuraciones ni modificaciones adicionales.

¿Qué sistema operativo permite docker?

Docker está disponible para Mac, Windows y Linux, y puedes instalarlo siguiendo los pasos que indican aquí https://docs.docker.com/get-docker/, además de docker necesitarás también a docker-compose, este permitirá orquestar el servicio de Odoo con el de la base de datos Postgres. Podrás instalar docker-compose siguiendo estas instrucciones https://docs.docker.com/compose/install/.

Repositorio

Puedes obtener el repositorio de la plantilla de la instalación de Odoo con docker-compose aquí https://github.com/escuelafullstack/template_odoo_docker_compose, sigue el artículo para que aprendas como esta estructurado, y como funciona.

Odoo • Imagen y texto

Estructura de Plantilla de proyecto Odoo con Docker

docker-compose.yaml: ​archivo que contiene la configuración de los contenedores de Odoo y Postgres

Dockerfile: archivo que contiene las instrucciones para la creación de la imagen para Odoo que dará vida al contenedor de Odoo.

.env: archivo donde se establecen los parámetros para el archivo docker-compose.yaml

config/odoo.conf: archivo donde se listan los parámetros de iniciación del servicio de odoo.

addons/: directorio donde se listan los módulos para tu proyecto.

Nota: Debes crear una copia de todos los archivos que inicien con "copy." y renombrarlos quitándole sólo “copy.”

Explicación de Uso

1. docker-compose.yaml

En el archivo de docker-compose.yaml se encuentran definidos los contenedores web (para Odoo, el nombre web es arbitrario) y db (para Postgres, el nombre db es arbitrario)

Odoo • Imagen y texto

Este archivo se encuentra parametrizado, donde los parámetros los puedes ver dentro de llaves ${ }, por ejemplo para llamar al valor del parámetro WEB_HOST, debemos de escribirlo así ${WEB_HOST}. Todo los valores de los parámetros que usamos en este archivo se encuentran definidos en el archivo .env.

Parámetros de los contenedores

  • container_name: nombre del contenedor

  • image: nombre de la imagen que se creará a partir del archivo Dockerfile

  • build: ubicación relativa del archivo Dockerfile

  • depends_on: Lista de servicios de los cual depende el servicio de Odoo, en este caso, Odoo depende de solo del servicio de db (base de datos)

  • ports: Permite publicar puertos expuestos dentro del contenedor, para nuestro ejemplo, la imagen de odoo expone el puerto 8069 y este es solo visible dentro del contenedor, sin embargo, para que este pueda ser accesible desde afuera se debe publicar mediante un puerto disponible en el sistema.

  • volumes: Permite la persistencia de datos en el contenedor. Debido a que los contenedores son volátiles por naturaleza, entonces es necesario asegurar los datos modificados y creados durante su funcionamiento. Para ello se suele definir una lista con pares ruta del sistema:ruta de contenedor, en donde ambas rutas serán sincronizadas. Para nuestro caso, los módulos que se crean en la carpeta ./addons se verán también en la carpeta del contenedor /mnt/extra-addons.

También es posible definir volúmenes que serán gestionados por docker, y podrán ser usados como parte de la persistencia de datos. Por ejemplo, se ha definido odoo-web-data, en la sección de volúmenes y se está usando en la posición de ruta del sistema.


  • entrypoint: Permite sobreescribir el entrypoint por defecto para el inicio de Odoo, por ejemplo: si nos encontramos en el ambiente de desarrollo, necesitaremos que se habilite el watchdog, para que se detecten los cambios de la codificación y se actualicen de forma automática. Para ellos agregaremos en el entrypoint el parámetro --dev all,  quedando finalmente así “/usr/bin/odoo -c /etc/odoo/odoo.conf --dev all

  • environment: Permite pasar valores de parámetros al contenedor.

2. Dockerfile


Este archivo permite la creación y actualización de una imagen, en esta se definen las instrucciones que configurarán a la imagen.

Para este caso se define una imagen usando Odoo 14 como base e instalando watchdog con pip3, dentro de este archivo se pueden instalar más librerías y definir más instrucciones de configuración.

3. odoo.conf



Este archivo guarda los parámetros de configuración de Odoo, y son usados para el inicio del servicio de odoo, para nuestro caso, los valores que se deben editar son db_host ,  db_user y db_password (se encuentran en .env). Puedes seguir editando el archivo según lo requieras, y para visualizar los cambios debes reiniciar el contenedor con el comando docker restart nombre_contenedor.

Ejecución:

Para levantar Odoo y su base de datos con docker-compose debes ubicarte en la raíz del proyecto y ejecutar el siguiente comando:

docker-compose up -d


Si has llegado hasta aquí, estoy seguro de que este artículo te ha ayudado a entender un poco más acerca de Odoo y Docker, si no es así, y tienes dudas puedes escribir tu consulta en los comentarios, y te responderé lo más pronto que pueda, también puedes seguir el Curso de Odoo: Framework Backend aquí



Curso de Odoo 13: Framework Backend

Crea módulos y personaliza módulos ya existentes para Odoo desde Cero. Además, podrás see parte de la comunidad de desarrolladores de Odoo en Escuela FULLSTACK.

Odoo • Texto e imagen
Instalación de Odoo 14 con docker-compose
Daniel Moreno
11 marzo, 2021
Share this post
Etiquetas
Editar
Archivar
Registrarse to leave a comment