Container image for running Odoo Enterprise Edition.
On startup, the container:
/var/odoo/.venv/var/www/odoo/odoo/odoo -u all --stop-after-init) using /etc/odoo/odoo.update.confsupervisord:
/etc/odoo/odoo.web.conf)/etc/odoo/odoo.cron.conf)| Container path | Purpose |
|---|---|
/var/www/odoo | Project root (Odoo source + custom addons) |
/etc/odoo | Configuration files (odoo.update.conf, odoo.web.conf, odoo.cron.conf) |
/var/lib/odoo | Odoo data directory (filestore, sessions) |
/mnt/extra-addons | Custom addons path |
/var/odoo/.venv | Python virtual environment (persist to avoid reinstalling on every restart) |
Three configuration files are expected in /etc/odoo:
http_enable = False and workers = 0.workers > 0 and max_cron_threads = 0.workers = 0, max_cron_threads > 0, and http_enable = False.All three files need the standard database connection settings (db_host, db_port, db_user, db_password, db_name).
docker-compose.ymlservices:
odoo:
image: vnvsa/odoo-ee:3.12-bookworm
depends_on:
- odoo_db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./my_custom_module:/mnt/extra-addons/my_custom_module
- ./odoo:/var/www/odoo
- odoo-venv:/var/odoo/.venv
odoo_db:
image: postgres:18
shm_size: 128mb
environment:
- POSTGRES_DB=mydb
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
volumes:
- odoo-db-data:/var/lib/postgresql
volumes:
odoo-web-data:
odoo-venv:
odoo-db-data:
The Odoo source code should be placed in the project root (e.g. as a symlink or extracted archive) so that it is available at /var/www/odoo/odoo/ inside the container.
Logs are written to /var/log/hosting/odoo/:
odoo.update.log -- Module update output (startup)odoo.web.log -- Web server logsodoo.cron.log -- Cron worker logsSupervisord itself outputs to stdout/stderr (visible via docker logs).
| Port | Service |
|---|---|
| 8069 | Odoo HTTP |
Content type
Image
Digest
sha256:48abb45c0…
Size
500.8 MB
Last updated
6 months ago
docker pull vnvsa/odoo-ee:3.12-bookworm