🏘️

Odooのプラグイン開発環境をサクっと構築

2022/10/13に公開

軽く自己紹介。
オープンソースのERPで最も使われているOdooのプラグインで不動産管理システムを開発しています。
日本のユーザー数が少ないせいなのか、Odooに関する日本語の情報は乏しいようです。
日本のユーザーが増えることを願いつつ、Odoo関連の情報を発信していきます。

今回は、docker-composeを使って手っ取り早くOdooプラグインの開発環境を構築します。

docker-compose.yml
version: '3.1'
services:
  web:
    image: odoo:15.0
    depends_on:
      - db
    ports:
      - "8069:8069"
    platform: linux/amd64
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
      - ./sh:/mnt/sh
    environment:
      - PASSWORD_FILE=/run/secrets/postgresql_password
    secrets:
      - postgresql_password
    entrypoint: /mnt/sh/entrypoint.sh
    command: odoo
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
    secrets:
      - postgresql_password
volumes:
  odoo-web-data:
  odoo-db-data:

secrets:
  postgresql_password:
    file: odoo_pg_pass
odoo_pg_pass
password
config/odoo.conf
[options]
# data_dir = /var/run/odoo
log_level = debug
# logfile = /var/log/odoo/odoo-server.log
# pidfile = /var/run/odoo/odoo.pid
# limit_time_cpu = 600
# limit_time_real = 1200
# max_cron_threads = 0
addons_path = /mnt/extra-addons
sh/entrypoint.sh
#!/bin/bash

set -e

if [ -v PASSWORD_FILE ]; then
    PASSWORD="$(< $PASSWORD_FILE)"
fi

# 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:='odoo'}}}

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=30
            exec odoo "$@" "${DB_ARGS[@]}"
        fi
        ;;
    -*)
        wait-for-psql.py ${DB_ARGS[@]} --timeout=30
        exec odoo "$@" "${DB_ARGS[@]}" -u tree_manager
        ;;
    *)
        exec "$@"
esac

exit 1

起動します。

$ docker-compose up

localhost:8069をブラウザで開くと初期設定画面が開きます。
パスワードなど適当に設定すればOdooが使えるようになります。

Discussion