Odoo y Docker Compose: Instalar y configurar Odoo con Docker y Docker-compose y utilidades Docker.

Esto puede servir para cualquier versión de Odoo ya que estamos configurando el entorno de Docker y Docker-compose para que corra cualquier imagen de Odoo aunque en el caso de la v12 tiene algún ajuste más que por el momento no lo voy a poner porque aún no la usamos.

La forma de instalar y configurar Docker y Docker-compose la tenemos en la web oficial con ejemplos de docker-compose y todo: https://docs.docker.com/samples/library/odoo/

Más referencias en: https://blog.desdelinux.net/instalar-odoo-docker-anadir-modulos-externos/ y https://minhng.info/docker/docker-compose-for-odoo-10.html

Se puede instalar Docker y Compose de otra forma (la mayoría lo hace de esa otra forma) pero nosotros nos limitaremos a hacerlo con lo que tenemos en Ubuntu si es una distribución actual, si no tampoco es complicado hacerlo como lo dicen por ahí.

Pasos que seguiremos nosotros:

  • Instalamos Docker: sudo apt install docker
  • Instalamos Docker Compose: sudo apt install docker-compose (también se puede hacer así, pip install docker-compose)
  • Instalamos Docker Engine por si acaso aunque seguramente ya se haya instalado: sudo curl -sSL https://get.docker.com/ | sh
  • Reiniciamos Docker: sudo service docker restart
  • Creamos un directorio para los ficheros de configuración tanto de docker-compose como para luego de Odoo. Normalmente nosotros creamos un directorio llamado docker y dentro de este otro llamado odoo11 (o la versión que sea).
  • Nos metemos en el subdirectorio de nuestro odoo (ej. cd ./docker/odoo11) y editamos el fichero de configuración de compose: nano docker-compose.yml Hay que tener en cuenta que el fichero siempre se ha de llamar así para que docker-compose lo levante automáticamente, si le ponemos otro nombre no lo hará.
  • Este archivo va a contener lo siguiente (ojo, los ficheros .yml tienen en cuenta la anidación y sangría del texto):
    version: '2'
    services:
      odoo11:
        image: odoo:11
        restart: always
        ports:
          - "8069:8069"
        links:
          - db
        volumes:
          - ./extra-addons:/mnt/extra-addons
          - ./config:/etc/odoo
      db:
        image: postgres:10
        restart: always
        environment:
          - POSTGRES_USER=odoo
          - POSTGRES_PASSWORD=odoo
    

    En dicho archivo podemos hacer los siguientes cambios para adaptarlo a nuestros requerimientos:

    • image: odoo:11 : Puedes reemplazar odoo:11 por la versión que necesita odoo:8 , 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" o ports: - "8071:8069" y así sucesivamente
    • image: postgres:10 : 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. También ponemos el volumen config vinculado a /etc/odoo donde se ponen los ficheros de configuración de este como por ejemplo odoo.conf.

    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.

  • Importante: Para que Odoo pueda encontrar los módulos extras en ./extra-addons hay que crear un fichero odoo.conf que pondremos en el volumen ./config con los path de los módulos nuestros separados por comas.
  • En la versión 14.04 de Ubuntu puede haber problemas con la última versión de docker. Para ajustar eso pondremos una versión determinada de este de forma que no de problema:
    apt install -y docker-ce=18.06.1~ce~3-0~ubuntu jq

    También se puede hacer poniendo la versión 4.xxx del kernel pero nosotros lo hemos hecho con el downgrade de docker:

sudo apt-get install --install-recommends linux-generic-lts-xenial

  • El fichero ./config/odoo.conf puede ser así (faltarían algunas direcciones más pero nos hacemos una idea ¿no?):
    [options]
      addons-path = /mnt/extra-addons/l10n-spain-11.0,/mnt/extra-addons/,/mnt/extra-addons/account-financial-tools-11.0,/mnt/extra-addons/oficial
  • Una vez que tenemos nuestro entorno compose configurado, estándo en el directorio donde tenemos el fichero docker-compose.yml, lo ponemos en marcha: sudo docker-compose up -d

El -d es para que no se quede el cursor capturado y podamos seguir trabajando tras lanzarse el docker.

Para parar el sistema compose pondremos: sudo docker-compose stop

Para volver a activarlo: sudo docker-compose up -d

Importante: todo esto hay que ejecutarlo estando en el directorio donde esté el fichero docker-compose que queremos usar.

Si tenemos varias versiones de Odoo lo haremos con distintos ficheros docker-compose.yml en distintos subdirectorios. Al reiniciar el servidor, se iniciarán todos. Si no queremos que uno se reinicie con el servidor, le cambiamos el nombre al fichero, por ejemplo: docker.compose.yml a parado-docker-compose.yml

Una vez que tenemos nuestro docker para producción lo podremos iniciar como servicio en el inicio de nuestro servidor porque si no solo se iniciará si entramos en una sesión. Esto lo tenemos explicado en el artículo "Docker: Iniciar docker-compose como servicio".

NOTA: Si queremos tener un entorno de terminal "bash" dentro del contenedor que queramos para, por ejemplo, instalar cosas del python de nuestro contenedor de Odoo, lo iniciaremos desde terminal con esto:

docker exec -it odoo11_odoo11_1 bash (esto para el usuario normal sin permisos de root, odoo)
docker exec -u 0 -it odoo11_odoo11_1 bash (esto para entrar como usuario, root. Para instalar cosas en el sistema linux del docker, etc)

El "odoo11_odoo11_1" es el nombre del contenedor que obtendremos mediante el comando: docker ps

Como ejemplo he instalado los siguientes módulos que faltaban para instalar el módulo de Factura-E:

  • pycountry de python3 entrando de esa forma y ejecutando el comando: pip3 install pycountry
  • OpenSSL de python con: pip3 install pyopenssl
  • xmlsig de python con: pip3 install xmlsig
  • zeep de python con: pip3 install zeep
  • xmlsec de pythin con: pip3 install xmlsec

Puede dar error de ejecución de 'x86_64-linux-gnu-gcc' al instalar xmlsec. Hay que instalar lo siguiente:

sudo apt-get install python3 python-dev python3-dev \
     build-essential libssl-dev libffi-dev \
     libxml2-dev libxslt1-dev zlib1g-dev \
     python-pip

Ya está 🙂

No hay comentarios

Agregar comentario