Instalando Odoo con Docker
Docker es una plataforma abierta que permite desarrollar, distribuir y ejecutar aplicaciones. Separa la aplicación de la infraestructura que se necesita para correrla. El problema que tenemos en este momento es, necesitamos que cada desarrollador tenga la misma infraestructura de desarrollo para que se evite el problema de "esto corre en mi máquina y en el server de test solo va a correr los años bisiestos". Lo que se necesita es que dicha infraestructura sea común y replicable a lo largo de todo un equipo de desarrollo, con el fin de permitir el crecimiento de dicho equipo.
En este post no vamos a detallar como funciona Docker ni cuales son sus componentes. Simplemente vamos a instalar en un server Ubuntu gracias a Docker, Odoo. Y lo vamos a ejecutar. Posteriormente vamos a hacer que se ejecute Odoo desde la línea de comando y se hagan las modificaciones necesarias para que se pueda utilizar el debugger mientras se utiliza Odoo.
El primer paso es asegurarnos que docker-compose está presente, para ello se ejecuta el siguiente comando:
docker-compose -version
Seguidamente, debemos definir el archivo donde docker-compose.yml donde se configuran cada uno de los containers que se utilizarán en el proyecto:
version: '3.1'
services:
odoo:
image: odoo:15.0
env_file: .env
depends_on:
- postgres
ports:
- "8069:8069"
volumes:
- data:/var/lib/odoo - ./external-addons:/odoo/external-addons
postgres:
image: postgres:13
env_file: .env
volumes:
- db:/var/lib/postgresql/data/pgdata
volumes:
data:
db:
Junto con un archivo de environment (.env) donde se definirán las diferentes variables de ambiente
# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=password_for_userxxx
Si quieren saber como generar un password fuerte y aleatorio, solo tienen que hacer desde la línea de comando
openssl rand -base64 30
El archivo docker-compose.yml define dos servicios: uno es Odoo que es el que corre la aplicación, el segundo es postgres que corre la base de datos PostgreSQL. El servicio odoo expone el puerto 8069 y ambos servicios utilizan volumenes que almacenan datos por fuera de los containers. Ambos servicios utilizan variables de ambiente que son definidas en el archivo .env.
Luego de definir ambos archivos, procedemos a ejecutar el docker-compose. La primera vez que se ejecuta se realizará el build de los containers y luego estarán ambas aplicaciones corriendo:
Uno puede comprobar la ejecución de ambos containers haciendo un docker ps
docker ps
Donde vemos que hay dos containers ejecutandose, uno es odoo15_odoo_1 y el otro es odoo15_postgres_1. Supongamos que queremos realizar comandos de SQL con psql contra el container de PostgreSQL
Y si queremos comprobar que Odoo se está ejecutando
Y si queremos comprobar que Odoo se está ejecutando, podemos probar con el navegador:
Temas pendientes
Hay unos cuantos temas que tengo pendiente con Docker. Por lo pronto como administrar el archivo de configuración de Odoo, la actualización de Odoo (se está instalando con el paquete de Debian provisto por Odoo), como agregar módulos customizados, como instalar la localización argentina (para tener un Docker con la localización argentina) y por último como utilizar el debugger de Python mientras utilizo Odoo. No nos olvidemos que Docker se puede utilizar tanto para desarrollo como para el ambiente de producción.
Acerca de:
Gustavo Orrillo
Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.