Odoo Docker

Installation odoo docker

Installation Docker et Docker-compose

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verifier que docker est bien installer avec:

  sudo docker run hello-world


Docker Compose

Pour l'installation de docker-compose je vous laisse le soin de visiter how-to-install-and-use-docker-compose-on-ubuntu-22-04


Odoo docker compose

Ubuntu

Pour installer odoo sur un serveur linux, nous pouvons passer par odoo docker qui est facile et simple a mettre en place. Tout d'abord nous allons commencer par:

Créer un répertoire de travail avec les différentes sous dossiers et fichiers

mkdir odoo

cd odoo

mkdir odoo15

cd odoo15

mkdir addons

touch docker-compose.yml

touch entrypoint.sh

mkdir etc

cd etc

touch odoo.conf

Voici l'arboressence que nous devons avoir:

odoo

        odoo15

                addons

​docker-compose.yml

​entrypoint.sh

​etc

​odoo.conf




docker-compose.yml


version: '2'

services:

  db:

    image: postgres:14

    user: root

    environment:

      - POSTGRES_USER=odoo

      - POSTGRES_PASSWORD=odoo15

      - POSTGRES_DB=postgres

    restart: always             # run as a service

    volumes:

        - ./postgresql:/var/lib/postgresql/data


  odoo15:

    image: odoo:15

    user: root

    depends_on:

      - db

    ports:

      - "1010:8069"

      - "2011:8072" # live chat

    tty: true

    command: --

    environment:

      - HOST=db

      - USER=odoo

      - PASSWORD=odoo15

    volumes:

      #- /etc/timezone:/etc/timezone:ro

      #- /etc/localtime:/etc/localtime:ro

      # - ./entrypoint.sh:/entrypoint.sh   # if you want to install additional Python packages, uncomment this line!

      - ./addons:/mnt/extra-addons

      -  ./odoo15:/mnt/entreprise​ 

      - ./etc:/etc/odoo

    restart: always             # run as a service



entrypoint.sh



#!/bin/bash


set -e


# set the postgres database host, port, user and password according to the environment

# and pass them as arguments to the odoo process if not present in the config file

: ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}}

: ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}}

: ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}}

: ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo15'}}}


# install python packages

pip3 install pip --upgrade

pip3 install -r /etc/odoo/requirements.txt


# sed -i 's|raise werkzeug.exceptions.BadRequest(msg)|self.jsonrequest = {}|g' /usr/lib/python3/dist-packages/odoo/http.py


DB_ARGS=()

function check_config() {

    param="$1"

    value="$2"

    if grep -q -E "^\s*\b${param}\b\s*=" "$ODOO_RC" ; then

        value=$(grep -E "^\s*\b${param}\b\s*=" "$ODOO_RC" |cut -d " " -f3|sed 's/["\n\r]//g')

    fi;

    DB_ARGS+=("--${param}")

    DB_ARGS+=("${value}")

}

check_config "db_host" "$HOST"

check_config "db_port" "$PORT"

check_config "db_user" "$USER"

check_config "db_password" "$PASSWORD"


case "$1" in

    -- | odoo)

        shift

        if [[ "$1" == "scaffold" ]] ; then

            exec odoo "$@"

        else

            wait-for-psql.py ${DB_ARGS[@]} --timeout=3000

            exec odoo "$@" "${DB_ARGS[@]}"

        fi

        ;;

    -*)

        wait-for-psql.py ${DB_ARGS[@]} --timeout=3000

        exec odoo "$@" "${DB_ARGS[@]}"

        ;;

    *)

        exec "$@"

esac


odoo.conf



[options]​ 

addons_path = /mnt/extra-addons,  /mnt/entreprise/odoo/addons ​ 

server_wide_modules = base, web​ 

data_dir = /etc/odoo​ 

admin_password = password​ 

logfile = /etc/odoo-server.log​ 

db_template = template0​ 

dev_mode = reload 



Démarrage des services



Apres avoir configurer nos différentes fichier on démarrage les services avec la commande suivante:

docker-compose up

Cette commande va nous permettre de créer deux conteneur docker; un conteneur PostgreSQL et un conteneur Odoo. 

Nous pouvons inspecter les services en cours d'exécution à l'aide de la commande suivante. 

docker-compose  ps

Inspection des journaux 

Il existe de nombreuses approches que vous pouvez adopter pour inspecter les journaux des services en cours d'exécution.

Nous commencerons par l'approche la plus simple et la plus primitive.

docker-compose logs

Ou bien aller dans etc puis faire un cat odoo-server.logs qui contient les logs.

Interagir avec le conteneur Odoo

Nous utiliserons la commande suivante pour lier notre shell au conteneur Odoo.

docker-compose exec -it web /bin/bash


Arrêter les conteneurs 

docker-compose down


Dépendances 


WKHtmlToPdf est un outil très courant pour générer des fichiers PDF à partir de code HTML. Suivez les étapes  ci-dessous  pour l'installer:

Télécharger le paquet

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb

Installer le paquet

sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb

Corriger les dépendances

sudo apt installer -f

Maintenant on part dans :

Paramètres ==> Paramètres ==> Paramètres système : add key = report.url, value= http://127.0.0.1:8069/  

Cela va nous permettre de pouvoir imprimer des rapports pdf depuis Odoo