Hola amigos quiero compartir con ustedes una forma de instalar OdooERP 10 en Docker:
Asumimos que ya tenemos descargado la imagen de docker del ubuntu 16.06, sino vemos el siguiente artículos, donde vemos como descargar imagenes de docker.
Paso1: Listando imagenes de docker
vemos las imágenes que tenemos, para este ejemplo:
docker images
veremos algo similar a:
Paso2: Creación de contenedor
Creamos un contenedor a partir de la imagen de Ubuntu que tenemos:
javier@javier:~$ docker run -it -p 8069:8069 --name=odoo10 --restart=always -v /opt/extras:/opt/extras d355ed3537e9 root@54eb20e87916:/#
Donde:
-p: Indica que puerto que voy liberar desde mi Servidor al Contenedor
–name: Le damos una nombre a nuestro contenedor
–restart: Hacemos que nuestro contenedor se cada vez que nuestro servidor se reinicie.
-v: Indicamos que carpetas vamos a compartir desde nuestro servidor real y el contenedor.
d355ed3537e9: Es el Id de la imagen apartir de la cual crearemos el contenedor.
Listamos los contenedores:
Paso3: Proceso de instalación de Postgresql
Actualizamos los repositorios:
root@54eb20e87916:/# apt-get update
Instalamos el siguiente paquete:
root@54eb20e87916:/# apt-get -y install locales
root@54eb20e87916:/# locale-gen es_PE.UTF-8 \ && locale-gen es_PE.UTF-8 \ && dpkg-reconfigure locales \ && update-locale LANG=es_PE.UTF-8 \ && update-locale LC_ALL=es_PE.UTF-8
Seleccionamos el numero 187 y 3 para el caso de Perú:
Locales to be generated: 187 Many packages in Debian use locales to display text in the correct language for the user. You can choose a default locale for the system from the generated locales. This will select the default language for the entire system. If this system is a multi-user system where not all users are able to speak the default language, they will experience difficulties. 1. None 2. C.UTF-8 3. es_PE.UTF-8 Default locale for the system environment: 3 Generating locales (this might take a while)... es_PE.UTF-8... done Generation complete. root@54eb20e87916:/#
Instamos postgresql
root@54eb20e87916:/# apt-get --no-install-recommends --no-install-suggests install postgresql postgresql-server-dev-9.5 -y
Creamos un usuario llamado odoo para la base de datos:
root@54eb20e87916:/# su postgres postgres@54eb20e87916:/$ /etc/init.d/postgresql restart * Restarting PostgreSQL 9.5 database server [ OK ] postgres@54eb20e87916:/$ psql --command "CREATE USER odoo WITH SUPERUSER PASSWORD 'odoo';" CREATE ROLE postgres@54eb20e87916:/$ exit exit root@54eb20e87916:/#
Congiguración de postgresql
root@54eb20e87916:/# sed -i "/# IPv6 local connections:/i host all all 0.0.0.0/0 md5" /etc/postgresql/9.5/main/pg_hba.conf && \ sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*' \t/" /etc/postgresql/9.5/main/postgresql.conf root@54eb20e87916:/# service postgresql restart * Restarting PostgreSQL 9.5 database server [ OK ]
Paso 4: Proceso de instalación de OdooERP
Instalamos paquetes zip y wget:
root@54eb20e87916:/# apt-get install -yq wget unzip
Instalamos paquetes extras:
root@54eb20e87916:/# apt-get install -yq libxrender1 libfontconfig libxext6 xz-utils
Ingresamo a la carpeta /tmp:
cd /tmp
Instalamos wkhtmltopdf:
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && \ tar Jvfx wkhtmltox-0.12.4_linux-generic-amd64.tar.xz && \ cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/ && \ cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/ && \ cp wkhtmltox/bin/wkhtmltopdf /usr/bin/ && \ cp wkhtmltox/bin/wkhtmltoimage /usr/bin/
Instalamos dependencias de Odoo:
apt-get install -yq python-pip \ libcups2-dev \ python-ldap \ libxml2-dev \ libffi-dev \ libssl-dev \ libxslt-dev \ node-less \ libsasl2-dev \ libldap2-dev \ libjpeg-dev
Creamos un usuario Odoo del sistema:
adduser --system --home=/opt/odoo --group odoo
Iniciamos sesión con el usuario odoo creado:
root@54eb20e87916:/# su - odoo -s /bin/bash odoo@54eb20e87916:/$
Descargamos Odoo
wget https://github.com/odoo/odoo/archive/10.0.zip && \ unzip 10.0.zip && \ rm 10.0.zip && \ mv odoo-10.0 server && \ chown -R odoo: server
Salimos del usuario de sesion de odoo en la terminal
odoo@54eb20e87916:~$ exit
Instalamos pip y las dependencias de python para OdooERP:
pip install --upgrade pip && pip install pytesseract pycups bs4 && pip install -r /opt/odoo/server/requirements.txt
Creamos una carpeta para el log de OdooERP
mkdir /var/log/odoo/ && \ mkdir /etc/odoo/ && \ chown odoo:root /var/log/odoo
Creando el archivo config de OdooERP:
cp /opt/odoo/server/debian/odoo.conf /etc/odoo/odoo.conf && \ sed -i "s/db_password = False/db_password = odoo/" /etc/odoo/odoo.conf && \ sed -i "s/addons_path = \/usr\/lib\/python2.7\/dist-packages\/odoo\/addons/addons_path = \/opt\/odoo\/server\/addons/" /etc/odoo/odoo.conf && \ echo "logfile = /var/log/odoo/odoo-server.log" >> /etc/odoo/odoo.conf && \ chown odoo: /etc/odoo/odoo.conf && \ chmod 640 /etc/odoo/odoo.conf
Creando el archivo de inicio de OdooERP
cp /opt/odoo/server/debian/init /etc/init.d/odoo && \ sed -i "s/DAEMON=\/usr\/bin\/odoo/DAEMON=\/opt\/odoo\/server\/odoo-bin/" /etc/init.d/odoo && \ chown root: /etc/init.d/odoo && \ chmod 755 /etc/init.d/odoo
Paso 5: Instalando supervisord
Instalar supervisord para iniciar varios servicios en docker
apt-get install --allow-unauthenticated -y supervisor
Editamos el archivo:
nano /etc/supervisor/conf.d/supervisord.conf
y agregamos el siguiente contenido:
[supervisord] nodaemon=true [unix_http_server] file=/tmp/supervisor.sock ; (the path to the socket file) [program:postgresql] user=postgres command=/usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf autorestart=true [program:odoo] user=odoo command=/opt/odoo/server/odoo-bin --config=/etc/odoo/odoo.conf ;stdout_logfile=/var/log/odoo/odoo.log autorestart=true redirect_stderr=true redirect_stdout=true [supervisorctl] serverurl=unix:///tmp/supervisor.sock [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
Eliminamos archivos temporales y descargados a fin de que nuestro contenedor sea lo mas liviano posible:
apt-get clean && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /tmp/*
Ahora ejecutamos supervisord que nos permitirá iniciar odoo y postgresql:
root@54eb20e87916:/# /usr/bin/supervisord
Ahora podemos ir a un navegador web y probar: http://IP_Server_or_domain.com:8069
Presionamos Ctrl + c para detener el servicio y presionamos Ctrl + p +q para salir del contenedor
Paso 6: Creando una imagen de Docker a partir de nuestra contenedor odoo10
Creando un imagen a partir de nuestro contenedor odoo10
docker commit odoo10 masterodoo10
odoo10: Nombre de contenedor
masterodoo10: Nombre de la imagen a crearse
Listando imágenes de Docker:
javier@javier:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE masterodoo10 latest 381b43a0ba68 10 minutes ago 1.55GB
Paso 7: Creando un nuevo contenedor a partir de nuestra imagen masterodoo10 creada.
Creando el contenedor:
docker run -itd -p 8090:8069 --name=odoo10_v2 --restart=always -v /opt/extras:/opt/extras masterodoo10 /usr/bin/supervisord
Listado los contenedores:
javier@javier:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3971541bf9d5 masterodoo10 "/usr/bin/supervisord" 52 seconds ago Up 51 seconds 0.0.0.0:8090->8069/tcp odoo10_v2
Ingresando al contenedor:
javier@javier:~$ docker exec -it odoo10_v2 bash root@24cdd406f850:/#
Estando dentro de nuestro contenedor podemos ver los procesos iniciados con ps -aux:
root@24cdd406f850:/# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.3 56520 18744 ? Ss+ 19:30 0:00 /usr/bin/python /usr/bin/supervisord postgres 11 0.0 0.4 293420 24372 ? S 19:30 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config odoo 12 0.3 0.9 449328 54508 ? Sl 19:30 0:00 python /opt/odoo/server/odoo-bin --config=/etc/odoo/odoo.conf postgres 16 0.0 0.0 293420 3920 ? Ss 19:30 0:00 postgres: checkpointer process postgres 17 0.0 0.0 293420 5504 ? Ss 19:30 0:00 postgres: writer process postgres 18 0.0 0.0 293420 3920 ? Ss 19:30 0:00 postgres: wal writer process postgres 19 0.0 0.0 293848 5108 ? Ss 19:30 0:00 postgres: autovacuum launcher process postgres 20 0.0 0.0 148404 3100 ? Ss 19:30 0:00 postgres: stats collector process root 25 0.0 0.0 18248 3180 ? Ss 19:31 0:00 bash root 38 0.0 0.0 34428 2860 ? R+ 19:33 0:00 ps -aux
Podemos ir a un navegador web y probar: http://IP_Server_or_domain.com:8090
Es todo, espero que les sirva de guia general.
Gracias.
1 comentario
carlos · 15/10/2022 a las 11:03 am
Muchas. Muchas gracias, por lo que haces ya que mos ayudas a realizar cosas que sin conocimiento lo intentamos, gracias ojala pudieras ayudar con odoo16 con docker haber si es posible hacerlo.gracias