Odoo Build
This is the Mint System Odoo development environment.
This projects provides a highly opinionated way to develop Odoo and Odoo modules. It supports the following scenarios:
- Docker Compose: Spin up a Odoo, Postgres and pgAdmin Docker container and experiment locally.
- Import and Export Database: Use Odoo scripts to copy and restore a remote customer database to the local environment. Investigate issues and deploy the database at ease.
- Community Edition: Checkout the Odoo Community Edition and start editing the source code.
- Enterprise Modules: Checkout the Odoo enterprise modules and deploy them into the Odoo Docker container or the Odoo source.
- Develop Modules: Scaffold a new module, develop new Odoo features locally and much more.
- Customizing Snippets: Create snippets and push them to an Odoo database.
- Odoo Scripts: Develope scripts to patch Odoo code.
- Odoo Image: Build and publish an custom Odoo Docker image.
- Kuberenetes: Deploy Odoo and Postgres to Kubernetes cluster.
Requirements
The Odoo development environment has the following requirements:
- Docker and Docker Compose
- Install python 3.6+ with pyenv
- 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. Pick the one required by your scenario. 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 branch.
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
Open browser to http://localhost:8069 and login with admin:admin
.
Create a new module from source
Scaffold a new module.
task create-module addons/project_report
Load modules from thirdpary 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.
Enable developer mode
Open this url http://localhost:8069/web?debug=1, which contains the debug flag.
Manage database with Docker
Open database manager http://localhost:8000/ and login with admin@example.com:admin
.
Remove Docker conainers
Kill docker containers and volumes.
task kill
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
DOCKER_REGISTRY=mint-system/
Build the Odoo image.
task build
Publish the Odoo image.
task publish
Start mail server.
task start mail
Register an outgoing mail server with these informations:
name: Mailhog
host: localhost
port: 1'025
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 ifnotify 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