#!/bin/bash set -euo pipefail ######################## ### ### Installation de modules OCA ### ### Logique : on corrige le filestore tant que le conteneur vit, on ARRETE le ### serveur Odoo (sinon son ir_cron entre en concurrence et provoque un ### SerializationFailure sur ir_module_module), puis on installe dans des ### conteneurs JETABLES issus du service compose (docker compose run --rm). ### On relance le serveur a la fin. ### ######################## source ./0.variables.env ODOO_SERVICE=odoo-service # Variables attendues dans 0.variables.env : # ODOO_SERVICE : nom du service compose (cf. docker compose config --services) # ODOO_CONTAINER : nom du conteneur en cours (container_name) # POSTGRES_DB : nom de la base : "${ODOO_SERVICE:?ODOO_SERVICE KO - verifie ton docker-compose.yml }" : "${ODOO_CONTAINER:?ODOO_CONTAINER absent de 0.variables.env}" : "${POSTGRES_DB:?POSTGRES_DB absent de 0.variables.env}" echo "=== Service compose : ${ODOO_SERVICE} / conteneur : ${ODOO_CONTAINER} ===" echo "=== Verification que le conteneur tourne ===" if ! docker inspect -f '{{.State.Running}}' "${ODOO_CONTAINER}" 2>/dev/null | grep -q true; then echo "ERREUR : conteneur ${ODOO_CONTAINER} non demarre ou inexistant" exit 1 fi echo "=== Correction des droits du filestore (conteneur encore vivant) ===" docker exec "${ODOO_CONTAINER}" \ chown -R odoo:odoo /var/lib/odoo/filestore echo "=== Arret du serveur Odoo (liberation de ir_cron) ===" docker stop "${ODOO_CONTAINER}" echo "=== Construction de la liste OCA ===" OCA_MODULES="$(./build_oca_modules.sh ./modules.d)" echo "${OCA_MODULES}" echo "=== Mise a jour de base (conteneur jetable) ===" docker compose run --rm -u odoo "${ODOO_SERVICE}" \ odoo \ -c /etc/odoo/odoo.conf \ -d "${POSTGRES_DB}" \ --update base \ --stop-after-init \ --no-http \ --logfile "" \ --log-level info echo "=== Installation des modules OCA (conteneur jetable) ===" docker compose run --rm -u odoo "${ODOO_SERVICE}" \ odoo \ -c /etc/odoo/odoo.conf \ -d "${POSTGRES_DB}" \ -i "${OCA_MODULES}" \ --stop-after-init \ --no-http \ --logfile "" \ --log-level info echo "=== Redemarrage du serveur Odoo ===" docker compose up -d "${ODOO_SERVICE}" echo "=== Installation terminee ==="