gOdoo is short for go Odoo.
It is a Vscode Devcontainer Environment for Odoo
with Python CLI godoo convenience wrapper around odoo-bin.
This repository is the base source for the Python package godoo-cli and serves as an all batteries included development environment.
This is the source repository for gOdoo. If you want to use gOdoo please refer to ./docker/Dockerfile and modify it to install godoo using Pip.
Made Possible by: WEMPE Elektronic GmbH
Python package that provides godoo command line interface around odoo-bin.
It's build with Typer to provide some convenience Wrappers for Odoo development and Deployment.
Most flags can be configured by Env variables.
Use godoo --help to find out more. HINT: Install tab-completion with godoo --install-completion
This workspace also contains Docker and Docker-Compose files. \
They are used to provide either easy Odoo instances where the source is pulled according to ODOO_MANIFEST.yml, or as a all batteries included devcontainer for VScode.
- Docker Compose
- Traefik container running with docker provider and "traefik" named docker network. Example: Traefik Devproxy
- SSH Agent running. (check
echo $SSH_AUTH_SOCK)
This gets passed trough in the Buildprocess to clone Thirdparty repos (Optional).
git clone https://github.com/OpenJKSoftware/gOdoo
cd godoo
. scripts/container_requirements.sh # Check Requirements
docker-compose build
docker-compose up
# wait......
# wait a bit mode ...
# just a little bit longer ..
# There we go.
# Odoo should be reachable on 'https://godoo.docker.localhost' assuming you didn't change .env TRAEFIK_HOST_RULE or COMPOSE_PROJECT_NAME- All batteries included Devcontainer with postgres service Container and local DNS resolvig managed by Traefik.
- Easy fully working Odoo instance by
docker-compose upwith https access. godooCLI wrapper around Odoo. (Most flags can be configured by Environment Variables and are already preconfigured in the Containers. See .env.sample)- Cups Container, that provides a CUPS Printserver
odoo-binis added to PATH and can thus be invoked from every folder.- Odoo will run in Proxy_Mode behind a Traefik reverse proxy for easy access on
https://$COMPOSE_PROJECT_NAME.docker.localhost - Odoo Pylint plugin preconfigured in vscode
- Preinstalled vscode Extensions Highlights:
- SQL Tools with preconfigured connection for easy Database access in the Sidebar.
- Docker Extension controls container host.
- Odoo Snippets
- Odoo Developments can Grab Odoo Model information from a running Server
- Todo Tree
- For Docker on windows: Clone the repo into the WSL2 Filesystem for better IO performance
- Have Traefik Running on
docker.localhostExample
There must be a Docker network calledtraefikthat can reach traefik. - Open Devcontianer:
- If you have the Devcontainer CLI:
devcontainer open . - If not open the workspace in Local Vscode. In the Command pallete search for
Reopen in container
- If you have the Devcontainer CLI:
- From within the container start Odoo using one of the following commands:
- You can enable godoo tab-completion by
godoo --install-completion make/make dev-> Prepares the runtime, initializes a missing DB, then starts Odoo with workspace addons and demo data.make bare-> Prepares, initializes, and starts Odoo without installing workspace modules.make prepare-> Synchronizes declared source repositories and prepares configuration and Python dependencies; it does not touch the database or start Odoo.make bootstrap-> Prepares and initializes a missing database; it does not start Odoo.make launch(ormake quick) -> Starts an existing runtime in development mode. It never initializes or upgrades a database.make offline-> Runs the full lifecycle without synchronizing source repositories.make kill-> Search forodoo-binprocesses and kill themgodoo reset --empty-> Drops the configured DB and its filestore- The full init script is available via "
godoo". (See --help for Options)
- You can enable godoo tab-completion by
- Open Odoo
https://$COMPOSE_PROJECT_NAME.docker.localhost
For exampleCOMPOSE_PROJECT_NAME=godoo--> https://godoo.docker.localhost - Login with
admin:admin - Profit!
gOdoo supports Odoo 19 and newer. godoo dev owns the DevContainer
lifecycle: it optionally synchronizes source, prepares configuration and
dependencies, asks Odoo to initialize only a missing runtime, runs the explicit
DevContainer post-bootstrap hooks, and launches Odoo. godoo launch only
starts an existing runtime. scripts/launchodoo.sh is a thin container adapter
with --prepare-only, --bootstrap-only, and --launch-only modes. Staging
password, report.url, and migration changes run only after a newly initialized
database.
Run tests with godoo test run all or godoo test run changes:origin/main.
Tests remain single-threaded and use Odoo's --test-tags, --test-file, and
--stop-after-init options.
For database lifecycle operations, Odoo 19 remains the source of truth.
godoo reset --db-template <db>_template replaces the runtime database and
filestore from a template; godoo reset --empty removes both. For a durable
baseline, use godoo db dump/godoo db load --force with an archive outside
the disposable Compose volumes. Dump/load needs temporary free space in
addition to the live data and archive. The default PostgreSQL 18 stack enables
file_copy_method = clone; godoo db duplicate-cow is explicit, requires
strict reflink support for both volumes, and never falls back to a full copy.
See the CoW workflow.
You can access the Odoo source by opening the VsCode workspace full.code-workspace from within the Container. This will open a Multi-Root Workspace. Really waiting for microsoft/vscode-remote-release#3665 here.
When you screwed up so bad its time to just start Over godoo has you covered:
There are 3 Options to reset the Dev Env.
- From Outside the Container run
make reset-containerin the project root to delete docker volumes and restart the container. (Vscode will prompt to reconnect if still open) - From Outside the Container run
make reset-container-hardin the project root to force rebuild the main Odoo container and then do the same asmake reset-container - From Inside the Container run
godoo reset --emptyto drop the configured DB and filestore, which is way quicker than the other options.
- Close vscode
- Remove
appanddbcontainer from docker. - Remove volumes:
db, odoo_thirdparty, odoo_web, vscode_extensions - Restart Devcontainer
Debugging doesn't reliably work with
Odoo Multiprocess mode
enabled.
The container ships with a Vscode Debug profile, that sets --workers 0 to allow for Debugging Breakpoints. See .vscode/launch.json
Use godoo shell to enter an interactive shell on the Database.
gOdoo uses GitHub Actions workflows for quality assurance and release management. The complete workflow documentation is available in the .github/workflows/README.md file.
Every pull request and push to main triggers automated quality checks:
- Linting and formatting with the latest Python tools
- Test execution with full coverage reports
- Docker image builds for verification
The project uses a structured version management process:
flowchart TD
A[Manual Trigger] -->|version-bump.yml| B[Create Release Branch]
B --> C[Bump Version in __about__.py]
C --> D[Create PR]
D --> E[Quality Checks]
E --> F[PR Review]
F -->|Merged| G[Release Creation]
G --> H[PyPI Publication]
- A maintainer triggers a version bump (patch/minor/major/pre-release)
- A pull request is automatically created with version changes
- After CI passes and approval, the PR is merged
- An automated process creates the GitHub release and publishes to PyPI
The godoo bootstrap function, will download some modules using git.
Which Repos to download is specified in ODOO_MANIFEST.yml (Default)
Not all of the cloned addons are automatically installed.
Install them via the Apps Page in Odoo using godoo rpc modules install or using odoo-bin.
Modules downloaded on the Odoo Marketplace can be dropped as a .zip archive in ./thirdparty


