##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
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
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
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
docker exec -u 0 -it odoo bash
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.
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
- 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
- Reiniciar el contenedor de Odoo
$ docker restart odoo8
Ahora verifique el directo /opt/odoo/log/
parra ver si contiene el archivo odoo.log