
Maintained by:
https://github.com/odoo/docker
Where to get help:
the Docker Community Slack, Server Fault, Unix & Linux, or Stack Overflow
Dockerfile linkshttps://github.com/odoo/docker/blob/22d1fa4c8006452832196232dbc1d106deac4d9a/19.0/Dockerfile
https://github.com/odoo/docker/blob/22d1fa4c8006452832196232dbc1d106deac4d9a/18.0/Dockerfile
https://github.com/odoo/docker/blob/22d1fa4c8006452832196232dbc1d106deac4d9a/17.0/Dockerfile
Where to file issues:
https://github.com/odoo/docker/issues?q=
Supported architectures: (https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/odoo/, https://hub.docker.com/r/arm64v8/odoo/, https://hub.docker.com/r/ppc64le/odoo/
Published image artifact details:
https://github.com/docker-library/repo-info/blob/master/repos/odoo (https://github.com/docker-library/repo-info/commits/master/repos/odoo)
(image metadata, transfer size, etc)
Image updates:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fodoo
https://github.com/docker-library/official-images/blob/master/library/odoo (https://github.com/docker-library/official-images/commits/master/library/odoo)
Source of this description:
https://github.com/docker-library/docs/tree/master/odoo (https://github.com/docker-library/docs/commits/master/odoo)
Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the LGPL 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).
[***]
!https://raw.githubusercontent.com/docker-library/docs/a***f9798f9c5e51e92409ebf4d5b39988fd13/odoo/logo.png
This image requires a running PostgreSQL server.
console$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15
console$ 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.
console$ docker stop odoo $ docker start -a odoo
When the Odoo container is created like described above, the odoo filestore is created inside the container. If the container is removed, the filestore is lost. The preferred way to prevent that is by using a Docker named volume.
console$ docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo
With the above command, the volume named odoo-data will persist even if the container is removed and can be re-used by issuing the same command.
The path /var/lib/odoo used as the mount point of the volume must match the odoo data_dir in the config file or as CLI parameters.
Note that the same principle applies to the Postgresql container and a named volume can be used to preserve the database when the container is removed. So the database container could be started like this (before the odoo container):
console$ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15
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.
The default configuration file for the server (located at /etc/odoo/odoo.conf) can be overriden at startup using volumes. Suppose you have a custom configuration at /path/to/config/odoo.conf, then
console$ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo
Please use https://github.com/odoo/docker/blob/master/17.0/odoo.conf 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
console$ docker run -p 8069:8069 --name odoo --link db:db -t odoo -- --db-filter=odoo_db_.*
You can mount your own Odoo addons within the Odoo container, at /mnt/extra-addons
console$ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo
Note: Altough there is no official Odoo Enterprise Docker image, the Enterprise modules can be mounted by using the above mentionned method.
console$ docker run -p 8070:8069 --name odoo2 --link db:db -t odoo $ docker run -p 8071:8069 --name odoo3 --link db:db -t odoo
Note: 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).
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.The simplest compose.yaml file would be:
ymlservices: web: image: odoo:17.0 depends_on: - db ports: - "8069:8069" db: image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo - POSTGRES_USER=odoo
If the default postgres credentials does not suit you, tweak the environment variables:
ymlservices: web: image: odoo:17.0 depends_on: - mydb ports: - "8069:8069" environment: - HOST=mydb - USER=odoo - PASSWORD=myodoo mydb: image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=myodoo - POSTGRES_USER=odoo
Here's a last example showing you how to
./addons.config/odoo.confsecrets file named odoo_pg_pass that contains the postgreql password shared by both servicesymlservices: web: image: odoo:17.0 depends_on: - db ports: - "8069:8069" volumes: - odoo-web-data:/var/lib/odoo - ./config:/etc/odoo - ./addons:/mnt/extra-addons environment: - PASSWORD_FILE=/run/secrets/postgresql_password secrets: - postgresql_password db: image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password - POSTGRES_USER=odoo - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata secrets: - postgresql_password volumes: odoo-web-data: odoo-db-data: secrets: postgresql_password: file: odoo_pg_pass
To start your Odoo instance, go in the directory of the compose.yaml file you created from the previous examples and type:
consoledocker compose up -d
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 Upgrade page or this https://github.com/OCA/OpenUpgrade 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 16.0+ uses a filestore (located at /var/lib/odoo/filestore/) for attachments. You should restore this filestore in your new Odoo instance by running
console$ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo
View https://github.com/odoo/odoo/blob/master/LICENSE for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in https://github.com/docker-library/repo-info/tree/master/repos/odoo.
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务