Contenedores Docker para Odoo
21 febrero, 2020 por
Contenedores Docker para Odoo
Administrator
| No comments yet


Introducci√≥n Un dolor de cabeza muy com√ļn para los desarrolladores odoo es el tener que establecer tu entorno de desarollo o tener que explicarle a un nuevo desarrollador todo lo que debe configurar para tener un entorno de pruebas. A veces sucede que queremos tener en paralelo dos versiones distintas de openerp/odoo.

Hasta ahora la solución que utilizaba era crear máquinas virtuales Virtualbox, pero eran bastante fastidiosas al tener que configurar adaptadores puente para poder acceder a los servicios dentro de la máquina virtual.

La solución ante tantas variaciones y exigentes configuraciones es un "Contenedor Docker".

De acuerdo con la firma analista de la industria 451 Research, "Docker es una herramienta que puede empaquetar una aplicaci√≥n y sus dependencias en un contenedor virtual que se puede ejecutar en cualquier servidor Linux. Esto ayuda a permitir la flexibilidad y portabilidad en donde la aplicaci√≥n se puede ejecutar, ya sea en las instalaciones f√≠sicas, la nube p√ļblica, nube privada, etc.8

-- https://es.wikipedia.org/wiki/Docker_%28software%29

Docker funciona como una especie de m√°quina virtual, pero con algunas ventajas relacionadas a comandos para trabajar con los contenedores y un repositorio de im√°genes de contenedores que permiten bajarte un contenedor de los servicios m√°s populares.

Un contenedor lo levantas y lo tumbas como si fuera un servicio más, así como puedes configurar fácilmente el puerto por el que escuchará dicho servicio dentro del contenedor, etc. Son muy flexibles.

Para más información, revisa su página oficial: https://www.docker.com/what-docker

Configuración de entorno docker para odoo 8 (debian jessie)

Fuente: https://docs.docker.com/engine/installation/debian/#debian-jessie-80-64-bit

Se instalan los paquetes necesarios:

apt-get install \
     apt-transport-https \
     ca-certificates \
     curl \
     software-properties-common

Se agregan las claves de verificación para los repositorios de docker

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Agregamos el repositorio docker a nuestro archivo fuente de repositorios

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   jessie \
   stable"

Ahora actualizamos nuestros repositorios

apt-get update

Ahora, instalamos docker

$ sudo apt-get install docker-ce

Iniciamos docker:

/etc/init.d/docker start

Probamos que docker funciona a la perfección.

docker run hello-world

Este comando descarga una imagen de prueba y se ejecuta en un contenedor. Cuando el contenedor se ejecuta, imprime un mensaje informativo y luego termina su ejecución.

Ahora debemos agregar nuestro usuario preferido al grupo docker. (Cambiar ${USER} por tu usuario)

groupadd docker
sudo gpasswd -a ${USER} docker
/etc/init.d/docker restart

Descargando y ejecutando el contenedor Docker de Odoo

Fuente: https://principiantedelinux.wordpress.com/2014/06/25/odoo-8-con-docker-en-pocos-minutos-andando-en-tu-pc/ Fuente más actualizada: https://hub.docker.com/_/odoo/

nota: en anteriores oportunidades primero se descargaba la imagen y luego se instanciaba el contenedor, pero si tu imagen está en los repositorios de docker, pueder ejecutar el comando de creación de contenedores y al no conseguir la imagen, docker se encargará de descargarla y hacer el resto.

Primero debemos descargar el contenedor de postgres

$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db8 postgres

Ahora descargamos y creamos el contenedor para odoo vinculado al contenedor de postgres ya creado

$ docker run -p 8069:8069 --name odoo8 --link db8:db -t odoo:8

... ve a prepararte un café mientras descarga... Luego de una larga espera, corremos nuestro contenedor

Ahora verificamos en el navegador si nuestro odoo funciona:

http://localhost:8069/

Listo! Ahora te recomendamos seguir leyendo para que aprendas algunas cositas de odoo

Accediendo a los archivos dentro del contenedor

Para ejecutar una consola dentro del contenedor

docker exec -i -t odoo bash

Y allí se pueden ejecutar comandos simples como cd o mkdir

la ruta de los addons de odoo dentro del contenedor está donde siempre /usr/lib/python2.7/dist-packages/openerp/addons

Para copiar un archivo o directorio desde el host al contenedor en el directorio addons

docker cp directorio odoo:/usr/lib/python2.7/dist-packages/openerp/addons

Si necesitas borrar un archivo o un directorio, dentro del bash del contenedor rm /ruta/al/archivo

¬ŅQu√©? ¬ŅPensaste qu ser√≠a m√°s dificil? Yo tambi√©n!!! xD

Accediendo al contenedor como usuario root

docker exec -u 0 -it odoo bash

Puntos de montaje hacia el LOG, el ADDONS-EXTRA y el config

Algo muy com√ļn es que en el caso de odoo, necesitemos revisar los logs (/var/log/odoo/odoo.log) o modificar archivos en nuestra carpeta addons, pero esto ameritar√≠a siempre copiarnos el archivo fuera del contenedor, y viceversa. Lo ideal en este caso es crear puntos de montaje desde el contenedor hacia el sistema anfitri√≥n, de manera estar√≠amos trabajando directamente hacia los archivos dentro del contenedor. Esta configuraci√≥n debe realizarse al crear el contenedor:

$ docker run -v /opt/odoo8/addons:/mnt/extra-addons -v /opt/odoo8/log:/var/log/odoo -v /opt/odoo8/config:/etc/odoo -p 8069:8069 --name odoo8 --link db8:db -t odoo:8

La ruta /opt/odoo8/addons es la del anfitrión, mientras que la ruta /mnt/extra-addons es la del contenedor.

Un cotillón de solución

Para crear un contenedor con los puntos de montaje necesarios hacia addons, log y config

1.- Crear los directorios

$ mkdir /opt/odoo8/
$ mkdir /opt/odoo8/addons
$ mkdir /opt/odoo8/config/
$ mkdir /opt/odoo8/log
$ chmod -R 755 /opt/odoo8/
$ chmod -R 777 /opt/odoo8/log

$ docker run -v /opt/odoo8/addons:/mnt/extra-addons -v /opt/odoo8/log:/var/log/odoo -v /opt/odoo8/config:/etc/odoo -p 8069:8069 --name odoo8 --link db8:db -t odoo:8
  1. Crear el archivo config en `/opt/odoo8/config/openerp-server.conf``

[options]
addons_path = /mnt/extra-addons,/usr/lib/python2.7/dist-packages/openerp/addons
data_dir = /var/lib/odoo
auto_reload = True
; admin_passwd = admin
; csv_internal_sep = ,
; db_maxconn = 64
; db_name = False
; db_template = template1
; dbfilter = .*
; debug_mode = False
; email_from = False
; limit_memory_hard = 2684354560
; limit_memory_soft = 2147483648
; limit_request = 8192
; limit_time_cpu = 300
; limit_time_real = 120
; list_db = True
; log_db = False
; log_handler = [':INFO']
; log_level = info
logfile = /var/log/odoo/odoo.log
; longpolling_port = 8072
; max_cron_threads = 2
; osv_memory_age_limit = 1.0
; osv_memory_count_limit = False
; smtp_password = False
; smtp_port = 25
; smtp_server = localhost
; smtp_ssl = False
; smtp_user = False
; workers = 16
; xmlrpc = True
; xmlrpc_interface = 
; xmlrpc_port = 8069
; xmlrpcs = True
; xmlrpcs_interface = 
; xmlrpcs_port = 8071
  1. Reiniciar el contenedor de Odoo $ docker restart odoo8

Ahora verifique el directo /opt/odoo/log/ parra ver si contiene el archivo odoo.log

Contenedores Docker para Odoo
Administrator
21 febrero, 2020
Share this post
Archivar
Registrarse to leave a comment