En el artículo Paso a paso para montar un ERP y CRM para tu Pyme enseñamos a como hacer andar una máquina virtual que tenía una instalación de Odoo 8 preconfigurada, la cuál nos permitía disfrutar de este ERP de una manera sencilla y rápida, en esta ocasión queremos introducirnos en el mundo de Docker e instalar Odoo utilizando esta grandiosa tecnología.
Básicamente con este tutorial aprenderás a cómo instalar Odoo con docker y añadir módulos externos que permitirán mejorar y ampliar las funcionalidades de Odoo. Gracias a docker podrás tener en un mismo ordenador cualquier versión de Odoo y tener múltiples instancias corriendo, lo que facilitará el desarrollo y la puesta en marcha en cualquier momento, cualquier organización y sobretodo en cualquier entorno.
El procedimiento es bastante sencillo pero voy a tratar de hacerlo lo más detallado posible, los pasos y procedimientos se enfocarán en distros con Ubuntu 16.04 pero podrán ser aplicados fácilmente en cualquier distro Linux.
Índice
Pasos para instalar Docker y Docker Compose
Instalar Docker
Para instalar Docker en Ubuntu basta con que ejecutemos el siguiente comando:
sudo apt-get install docker.io
Añadir tu usuario al grupo de Docker
Debemos ejecutar el siguiente comando:
sudo gpasswd -a ${USER} docker
Instalar Docker-compose
La manera más sencilla de instalar Docker-ompose es usando pip, para ello ejecute el siguiente comando:
pip install docker-compose
Instalar Docker-engine
Instale docker-engine con el siguiente comando:
sudo curl -sSL https://get.docker.com/ | sh
Reiniciar Docker
Con la finalidad de que todos los cambios sean tomados adecuadamente es conveniente reiniciar docker utilizando:
sudo service docker restart
Creando nuestro archivo docker-compose.yml
Una vez hayamos instalado docker, debemos crear el archivo docker-compose.yml en el directorio de nuestra preferencia, el mismo contendrá básicamente toda la información necesaria para hacer deploy de nuestro servicio con Odoo.
nano docker-compose.yml
Este archivo va a contener lo siguiente:
version: '2' services: odoo: image: odoo:8 restart: always ports: - "8069:8069" links: - db volumes: - ./extra-addons:/mnt/extra-addons db: image: postgres:9.4 restart: always environment: - POSTGRES_USER=odoo - POSTGRES_PASSWORD=odoo
En dicho archivo podemos hacer los siguientes cambios para adaptarlo a nuestros requerimientos:
image: odoo:8
: Puedes reemplaza odoo:8 por la versión que necesita odoo:9 , odoo:10, odoo11 o simplemente odoo:latest para la última versión disponible.ports: - "8069:8069"
: Reemplaze el primer puerto por el puerto que desee, esto le ayudará a tener múltiples instancias de odoo corriendo al mismo tiempo, por ejemplo podría quedar así,ports: - "8070:8069"
oports: - "8071:8069"
y así sucesivamenteimage: postgres:9.4
: También puede reemplazar la imagen de postgres que desea usar, particularmente esta versión me va bastante bien.
En líneas generales con este docker-compose.yml invocamos un conjunto de contenedores que se relacionan entre sí, como lo son el contenedor de la versión de odoo y el contenedor de postgres, así mismo para el primer contenedor manifestamos que escuchara del puerto 8069 (y se podrá acceder del que le indiquemos) y además se monta un volumen local llamado extra-addons que se vinculará automáticamente con el /mnt/extra-addons del contenedor de odoo.
Por último se describe el usuario y contraseña a utilizar para postgres y se determina que cuando el ordenador huésped se reinicia el servicio de docker también lo hará, esto gracias al parámetro restart: always.
Configuración inicial de Odoo
Una vez tengamos creado nuestro docker-compose.yml
, debemos iniciar la instancia de Odoo, para ello desde la terminal nos ubicamos en el directorio donde está el archivo creado anteriormente y ejecutamos:
docker-compose up -d
Automáticamente se iniciará la descarga de los contenedores docker necesarios, se iniciará la base de dato y podremos acceder a nuestra instancia de odoo desde localhost:8069
o el puerto que haya indicado. Una vez en ella tocará crear nuestra base de datos, para lo que debemos elegir el email, contraseña de acceso, lenguaje e idioma, además de seleccionar si queremos importar data de prueba para evaluar Odoo.
Una vez creada la base de datos podemos acceder a odoo y comenzar a disfrutar de sus bondades.
Añadiendo módulos externos a Odoo
El docker-compose.yml que creamos en pasos anteriores además de levantar las imagen de odoo y postgres necesaria también nos crea un volumen en nuestro directorio para poder añadir módulos externos a nuestra instancia. Para ello basta con que copiemos en dicho directorio un módulo compatible con la versión de odoo que hayamos ejecutado, puedes añadir tus propios módulos o descargarlo desde la Odoo apps.
Una vez que tengamos nuestro módulo en el directorio extra-addons (descomprimido) que se encuentra en el directorio donde tenemos nuestro docker-compose.yml, procedemos a darle los permisos correspondiente para que pueda ser leída por nuestro docker. La manera sencilla es que ubicado en el directorio padre de extra-addons ejecutemos desde la terminal los siguientes comandos:
sudo chown -R lagarto:lagarto extra-addons/ #reemplazar lagarto por su usuario sudo chmod -R 755 extra-addons/
Ahora desde nuestra instancia de odoo debemos activar el modo desarrollador que según la versión de odoo que tengas se puede hacer de la siguiente manera:
Activar modo desarrollador en Odoo 8
El modo de desarrollado en Odoo 8 se activa desde los perfiles de Usuario, para ello desde el menú acceda a la categoría de Usuario, ubique su usuario administrador y en la parte inferior derecha active las características
Activar modo desarrollador en Odoo 9
En Odoo 9 vaya a la parte superior derecha y pulse sobre la fecha que esta a un costado de la foto de perfil del usuario, luego vaya a la opción Acerca de y en la ventana que se abra seleccione Activar modo desarrollador.
Activar modo desarrollador en Odoo 10 y Odoo 11
Para activar el modo desarrollador en Odoo 10 y 11 debemos dirigirnos al menú de Configuración y en la parte inferior derecha pulsar sobre Activar modo desarrollador.
Por último en cualquiera de las versiones debemos ir al menú de modulos locales o apps y pulsar sobre el enlace de actualizar la lista de módulos, ya luego puede instalar los módulos como se explicó en el artículo de Cómo instalar módulos en Odoo.
Instalando paquetes en nuestro docker
Se puede dar el caso que alguno de los módulos o utilidades que quieras incorporar a odoo (o una característica propia de odoo) necesite la instalación de paquetes externos, esto se puede hacer bastante fácil en docker gracias a docker exec
que es una utilidad que nos permite ejecutar comandos en un contenedor docker.
Lo primero que debemos saber es el nombre de nuestra instancia de docker lo cuál se realiza con el siguiente comando:
docker ps
Para instalar como root una aplicación en un docker debemos ejecutar el siguiente comando adaptándolo a su necesidades:
docker exec -u root odoo9_odoo_1 pip install xlsxwriter
Donde docker exec -u root odoo9_odoo_1
nos indica que se va a ejecutar un comando como root en la instancia odoo9_odoo_1 y pip install xlsxwrite
r sería el comando que desea ejecutar.
Por último me gustaría compartir varios comandos que le será de utilidad cuando trabajamos con docker-composer
# Se ejecuta desde el directorio de una instancia de docker y para el docker-compose que este corriendo docker-composer stop # Se ejecuta desde el directorio de una instancia de docker e inicia el docker-compose docker-composer start # Parar todos los contenedores docker stop $(docker ps -a -q) # Eliminar todos los contenedores docker rm $(docker ps -a -q) # Eliminar todas las imágenes docker rmi $(docker images -q)
Espero el tutorial sea de su agrado, en próximos artículos comenzaremos a aprender a utilizar Odoo y configurarlo en nuestras Pymes.
14 comentarios, deja el tuyo
Magnífico tutorial, a ver si saco tiempo para ponerlo en práctica: tanto por Odoo como por Docker parece muy interesante. Por ahora estoy liado a ver si aprendo algo de web-scraping usando rstudio y un docker de selenium-firefox, algo a explorar por DesdeLinux.
Selenium no es para hacer scraping es para hacer wrraper. Solo alcaro XD scraping solo es para leer datos.
Bueno, intento aprender a leer datos de webs y ponerlos en una tabla o tablas estructuradas para manejarlos después. Según wikipedia:
Web scraping es una técnica utilizada mediante programas de software para extraer información de sitios web. Usualmente, estos programas simulan la navegación de un humano en la World Wide Web ya sea utilizando el protocolo HTTP manualmente, o incrustando un navegador en una aplicación.
Wrapper in data mining is a program that extracts content of a particular information source and translates it into a relational form.[1] Many web pages present structured data – telephone directories, product catalogs, etc. formatted for human browsing using HTML language.
Puede ser que sea más Wrapper por ser información estructurada en tablas, sí. Es muy interesante.
¿Es posible instalarlo en una Raspberry pi con Ubuntu Mate?
Si es posible estimado, vamos a ver si con un poco de tiempo me hago un tutorial sobre el tema
eso seria excelente tengo varias PI agarrando polvo
Y yo necesitando una para las pruebas 🙁
Cómo descargo con lenguaje en español? O sea que la aplicación este en español,y si hay para Windows ?
Al crear la base de datos puedes elegir el idioma de tu preferencia, si funciona en Windows también (tiene un instalador desde la página de odoo)
Hola, estoy intentando instalarlo en una Raspberry pi 3 y al ejecutar el script de Docker:
docker-compose up -d
Me salta el siguiente error:
ERROR: no matching manifest for linux/arm in the manifest list entries.
Gracias.
Muy bueno el tutorial, gracias, y como se instalarían el resto de instancias, no me queda muy claro,hay que poner mas puesto en el archivo docker-compose.yml, gracias
me podrian ayudar por favor a encontrar la ruta del addons, estoy en un mac? muchas gracias
Cómo seria para instalar la versión enterprise?
Hola, como seria si necesito actualizar un modulo que estoy programando desde la terminal?