Official Repository

Last pushed: 16 days ago
Short Description
Odoo (formerly known as OpenERP) is a suite of open-source business apps.
Full Description

Supported tags and respective Dockerfile links

For more information about this image and its history, please see the relevant manifest file (library/odoo). This image is updated via pull requests to the docker-library/official-images GitHub repo.

For detailed information about the virtual/transfer sizes and individual layers of each of the above supported tags, please see the repos/odoo/tag-details.md file in the docker-library/repo-info GitHub repo.

What is Odoo?

Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the AGPL license. This suite of applications covers all business needs, from Website/Ecommerce down to manufacturing, inventory and accounting, all seamlessly integrated. It is the first time ever a software editor managed to reach such a functional coverage. Odoo is the most installed business software in the world. Odoo is used by 2.000.000 users worldwide ranging from very small companies (1 user) to very large ones (300 000 users).

www.odoo.com

How to use this image

This image requires a running PostgreSQL server.

Start a PostgreSQL server

$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo --name db postgres:9.4

Start an Odoo instance

$ docker run -p 8069:8069 --name odoo --link db:db -t odoo

The alias of the container running Postgres must be db for Odoo to be able to connect to the Postgres server.

Stop and restart an Odoo instance

$ docker stop odoo
$ docker start -a odoo

Stop and restart a PostgreSQL server

When a PostgreSQL server is restarted, the Odoo instances linked to that server must be restarted as well because the server address has changed and the link is thus broken.

Restarting a PostgreSQL server does not affect the created databases.

Run Odoo with a custom configuration

The default configuration file for the server (located at /etc/odoo/openerp-server.conf) can be overriden at startup using volumes. Suppose you have a custom configuration at /path/to/config/openerp-server.conf, then

$ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo

Please use this configuration template to write your custom configuration as we already set some arguments for running Odoo inside a Docker container.

You can also directly specify Odoo arguments inline. Those arguments must be given after the keyword -- in the command-line, as follows

$ docker run -p 8069:8069 --name odoo --link db:db -t odoo -- --db-filter=odoo_db_.*

Mount custom addons

You can mount your own Odoo addons within the Odoo container, at /mnt/extra-addons

$ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo

Run multiple Odoo instances

$ docker run -p 8070:8069 --name odoo2 --link db:db -t odoo
$ docker run -p 8071:8069 --name odoo3 --link db:db -t odoo

Please note that for plain use of mails and reports functionalities, when the host and container ports differ (e.g. 8070 and 8069), one has to set, in Odoo, Settings->Parameters->System Parameters (requires technical features), web.base.url to the container port (e.g. 127.0.0.1:8069).

Environment Variables

Tweak these environment variables to easily connect to a postgres server:

  • HOST: The address of the postgres server. If you used a postgres container, set to the name of the container. Defaults to db.
  • PORT: The port the postgres server is listening to. Defaults to 5432.
  • USER: The postgres role with which Odoo will connect. If you used a postgres container, set to the same value as POSTGRES_USER. Defaults to odoo.
  • PASSWORD: The password of the postgres role with which Odoo will connect. If you used a postgres container, set to the same value as POSTGRES_PASSWORD. Defaults to odoo.

Docker Compose examples

The simplest docker-compose.yml file would be:

version: '2'
services:
  web:
    image: odoo:10.0
    depends_on:
      - db
    ports:
      - "8069:8069"
  db:
    image: postgres:9.4
    environment:
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo

If the default postgres credentials does not suit you, tweak the environment variables:

version: '2'
services:
  web:
    image: odoo:10.0
    depends_on:
      - mydb
    ports:
      - "8069:8069"
    environment:
    - HOST=mydb
    - USER=odoo
    - PASSWORD=myodoo
  mydb:
    image: postgres:9.4
    environment:
      - POSTGRES_USER=odoo
      - POSTGRES_PASSWORD=myodoo

Here's a last example showing you how to mount custom addons, how to use a custom configuration file and how to use volumes for the Odoo and postgres data dir:

version: '2'
services:
  web:
    image: odoo:10.0
    depends_on:
      - db
    ports:
      - "8069:8069"
    volumes:
      - odoo-web-data:/var/lib/odoo
      - ./config:/etc/odoo
      - ./addons:/mnt/extra-addons
  db:
    image: postgres:9.4
    environment:
      - POSTGRES_PASSWORD=odoo
      - POSTGRES_USER=odoo
      - PGDATA=/var/lib/postgresql/data/pgdata
    volumes:
      - odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
  odoo-web-data:
  odoo-db-data:

To start your Odoo instance, go in the directory of the docker-compose.yml file you created from the previous examples and type:

docker-compose up -d

How to upgrade this image

Odoo images are updated on a regular basis to make them use recent releases (a new release of each version of Odoo is built every night). Please be aware that what follows is about upgrading from an old release to the latest one provided of the same major version, as upgrading from a major version to another is a much more complex process requiring elaborated migration scripts (see Odoo Enterprise Upgrade page or this community project which aims to write those scripts).

Suppose you created a database from an Odoo instance named old-odoo, and you want to access this database from a new Odoo instance named new-odoo, e.g. because you've just downloaded a newer Odoo image.

By default, Odoo 8.0 uses a filestore (located at /var/lib/odoo/filestore/) for attachments. You should restore this filestore in your new Odoo instance by running

$ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo

You can also simply prevent Odoo from using the filestore by setting the system parameter ir_attachment.location to db-storage in Settings->Parameters->System Parameters (requires technical features).

License

View license information for the software contained in this image.

Supported Docker versions

This image is officially supported on Docker version 1.13.1.

Support for older versions (down to 1.6) is provided on a best-effort basis.

Please see the Docker installation documentation for details on how to upgrade your Docker daemon.

User Feedback

Issues

If you have any problems with or questions about this image, please contact us through a GitHub issue. If the issue is related to a CVE, please check for a cve-tracker issue on the official-images repository first.

You can also reach many of the official image maintainers via the #docker-library IRC channel on Freenode.

Contributing

You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.

Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.

Documentation

Documentation for this image is stored in the odoo/ directory of the docker-library/docs GitHub repo. Be sure to familiarize yourself with the repository's README.md file before attempting a pull request.

Docker Pull Command

Comments (40)
edxz
2 months ago

Static files failed to load with the following error message when using this docker image
Failed to load resource: the server responded with a status of 404 (NOT FOUND)

this is my docker-compose.yml

odoo:
  image: odoo:latest
  ports:
    - 8069:8069
  links:
    - db
  environment:
    - PGHOST=db
    - PGUSER=odoo
    - PGPASSWORD=odoo
  volumes:
    - ./config:/etc/odoo
    - ./addons:/mnt/extra-addons
db:
  image: postgres:latest
  environment:
    - POSTGRES_USER=odoo
    - POSTGRES_PASSWORD=odoo
  ports:
   - 5433:5432

anyone else with the same issue?

andreilhicas
2 months ago

Hi,

I have a question,
I have uploaded a dump.sql to postgres with previous demo database.
However, I see the sql script being ran in the postgres log but whenever I try to acess odoo after a new clean up in compose (no volumes)

So how can I upload programatically on up (I already did it to postgres) but Odoo doesn't seem to find it, so I can run a test suite against it? Because, the odoo ups as a clean instance with no database attached, but if I try to do the web import it recognizes there is already a DB with such name.

Any help?
Thank you

p711
3 months ago

keeps using 'db', '5432', 'odoo', 'odoo'.

The quick fix for this is to define environment variable HOST, USER and PASSWORD.

da3oub
3 months ago

I'm having the same pb as davidpb it ignores these options and keeps using 'db', '5432', 'odoo', 'odoo'.

davidpb
3 months ago

In previous versions of the docker I could change the database host, port, user and password in the openerp-server.conf but the last time I tried it ignores these options and keeps using 'db', '5432', 'odoo', 'odoo'.

How can I change these settings in the new docker version?

davidcrty
5 months ago

This docker-compose exemple is working good with https://github.com/jwilder/nginx-proxy

version: '2'
services:
    db_odoo:
        image: postgres:9.4
        container_name: db_odoo
        environment:
            - POSTGRES_USER=odoo
            - POSTGRES_PASSWORD=odoo
        volumes:
            - ./data/postgresql:/var/lib/postgresql/data
        expose:
            - "5432"
        network_mode: bridge

    odoo:
        image: odoo:9
        container_name: odoo
        environment:
            - VIRTUAL_HOST=erp.yourwebsite.com
            - VIRTUAL_PORT=8069
            - PGHOST=db_odoo
            - PGUSER=odoo
            - PGPASSWORD=odoo
        tty: true
        depends_on:
            - db_odoo
        expose:
            - "8069"
        links:
            - db_odoo
        volumes:
            - ./data/odoo/config:/etc/odoo
            - ./data/odoo/addons:/mnt/extra-addons
            - ./data/odoo/filestore:/var/lib/odoo/filestore
        network_mode: bridge
greggy
5 months ago

Hi, when running odoo via nginx (jwilder/nginx-proxy) this way: docker run -e VIRTUAL_HOST=odoo.xxx.xxx -e VIRTUAL_PORT=8069 --name odoo --link db:db -t odoo
The layout of the website is completely gone. I can't click on the menus any more, images are gone,... Running the container outside nginx shows everything as it should be. Does anybody have an idea what might cause this behaviour?

jlil
5 months ago

Can we create a docker images for Odoo and Postgresql.

kovach
6 months ago

Hi guys,

Have a quick question about persisting data with odoo container.
Persisting DB data is clear - haven't had problems so far using the standard approach.
However - I'm having some app data persisting issues and wasn't able to find any answers so far.

This is my docker-compose.yml

version: '2'
services:
openerp_db:
image: postgres
container_name: openerp_db
volumes:

  - postgresql_data:/var/lib/postgresql/data
environment:
  - POSTGRES_USER=some_user
  - POSTGRES_PASSWORD=some_pass
network_mode: "bridge"

odoo:
image: odoo:9
container_name: openerp
ports:

  - "8069:8069"
links:
  - openerp_db:db
volumes:
  - /var/lib/odoo:/var/lib/odoo
depends_on:
  - openerp_db
tty: true
environment:
  - PGHOST=db
  - PGUSER=some_user
  - PGPASSWORD=some_pass
network_mode: "bridge"

volumes:
postgresql_data:

As you can see; I've tried to persist it by doing the
/var/lib/odoo:/var/lib/odoo and that does work - to a certain extent.
This is my problem:

  • I start docker using the yml above
  • I do the initial setup
  • I add company data - logo included
  • I alter some views (account.report_invoice_document, report.external_layout_header and report.external_layout_footer are just some of them)
  • I kill both dockers.
  • I remove them.
  • I build them back using the yml above.
    Things are generally working okay - still have my data, still have all of my views (I can find them, edit them, the XML is still the same as it was before killing everything), BUT, when I print the invoice - I don't see these views. No visuals.

Any ideas?

Thanks!

neobht
7 months ago

Please update odoo:latest image to odoo:latest Dockerfile.