Odoo Build
This is the Mint System Odoo development environment.
This projects provides a highly opinionated way to develop Odoo modules. It features:
- Odoo Source: Checkout the Odoo Community and Enterprise Edition and start editing the source code.
- Docker Compose: Spin up a Odoo, Postgres and pgAdmin Docker container and experiment locally.
- Native: Start an Odoo server directly from the source.
- Import and Export Database: Use Odoo scripts to copy and restore a customer database to the local environment. Investigate issues and deploy the database at ease.
- Community Modules: The most common community modules are checked out when setting up the project.
- Customizing Snippets: Create snippets and push them to an Odoo database.
- Odoo Scripts: Develope scripts to patch Odoo code.
- Odoo Revisions: Snapshot the Odoo source at a specific date. See revisions for details.
- Odoo Image: Build and publish a custom Odoo Docker image. See README for details.
- Kubernetes: Deploy Odoo and Postgres to a Kubernetes cluster.
- Develop Modules: Scaffold a new module, develop new Odoo features locally and much more.
- Credentials: Setup credentials to log into Odoo.
- Import Data: Import Odoo records from CSV.
Requirements
The Odoo development environment has the following requirements:
- Docker and Docker Compose
- Install Python 3.11+ with pyenv
- Install PostgreSQL
- bash/zsh alias
task='./task'with optional completion.
You can also use Nix to setup the development requirements.
Usage
The usage section is a set of workflows. See task help or task for details about the project commands.
Clone this repository.
git clone git@github.com:Mint-System/Odoo-Build.git
cd Odoo-Build
When working with Nix, run the nix-shell.
nix-shell
Checkout the Odoo version.
task checkout 13.0
# or
task checkout 14.0
# or
task checkout 15.0
# or
task checkout 16.0
# or
task checkout 17.0
Install Odoo scripts.
task install-odoo-scripts
Native
Run Odoo from source. Currently supported OS: Ubuntu, Debian, Pop!_OS, Darwin
Install Odoo native requirements
Pull the odoo submodule and install the python dependencies.
git submodule update odoo
task install-native
Initialize and start Odoo from source
Run database container only.
task start db
Initialize database.
task init-db
Start Odoo from source.
task start native
The browser will be opened automatically.
Create a new module from source
Scaffold a new module.
task create-module addons/project_report
Load modules from thirdparty folder
Clone thirdparty repos into the thirdparty folder.
To load modules from a thirdparty folder, set this env var in your .env file
ODOO_ADDONS_PATH=thirdparty/odoo-apps-partner-contact,../odoo-cd/untracked-odoo-apps
The paths will be appended to the Odoo config.
Docker
Run Odoo with Docker container.
Start and initialize Odoo with Docker
Run docker compose.
task start
Initialize database. The parameter -d specifies the name of the parameter and is mandatory.
Use docker-odoo-install help to show all options.
docker-odoo-install -d mydatabase
Open browser to http://localhost:8069 and login with admin:admin.
Install custom module
docker-odoo-install -m show_db_name
Common
Instructions that are true for Docker and native usage paths.
Change log level
To change the log level of Odoo set this env var in your .env file:
LOG_LEVEL=debug
Manage database with Docker
Open database manager http://localhost:8000/ and login with admin@example.com:admin.
Remove Docker conainers
This removes containers and volumes.
task down
Stop all Docker containers
task stop
Remove database
task drop-db
Image
To build the Docker image setup these .env vars:
ODOO_REVISION=16.0.2024.0405
DOCKER_REGISTRY=mint-system/
Checkout the Odoo revision.
task checkout-revision
Build the Odoo image.
task build
Publish the Odoo image.
task publish
Start mail server.
task start mail
Setup mail server config for Odoo.
task setup-mail
Troubleshooting
Remove tracked submodule folders
Problem
The checkout command fails tue to unregistered submdoules.
Solution
Remove the submodule with git rm, f.e. git rm oca/dms.
inotify instance limit reached
Problem
While starting the native server this error is thrown:
OSError: [Errno 24] inotify instance limit reached
Solution
Increase inotify watch limit.
sudo vi /etc/sysctl.conf
fs.inotify.max_user_watches=524288
fs.inotify.max_user_instances=256
sudo sysctl -p
ImportError libldap
Problem
Instance with auth_ldap does not start.
ImportError: libldap_r-2.4.so.2: cannot open shared object file: No such file or directory
Solution
Reinstall with pip flags.
pip install python-ldap --force-reinstall --no-binary python-ldap
