快速参考
-
由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
奥多(这是一种常见的对“Odoo”的中文译名,具体翻译可能会因上下文和使用场景有所不同) -
哪里可以获得帮助:
Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow
支持的标签及各自的 Dockerfile 链接
快速参考(续)
-
已发布的图像伪影细节:
repo-info repo 的repos/odoo/目录(历史记录)
(图像元数据、传输大小等) -
图像更新:
官方图像仓库的library/odoo标签
官方图像存储库的library/odoo文件(历史记录) -
此描述的来源:
文档库的odoo/目录(历史记录)
什么是 Odoo?
Odoo,前身为 OpenERP,是一套用 Python 编写的开源商业应用程序,根据 LGPL 许可证发布。这套应用程序涵盖了所有业务需求,从网站/电子商务到制造、库存和会计,所有这些都无缝集成。这是有史以来第一次有软件编辑者能够达到如此广泛的功能覆盖。Odoo 是世界上安装最多的商业软件。全球有 200 万用户使用 Odoo,用户范围从小型公司(1 个用户)到大型公司(30 万个用户)。

如何使用此图像
此图像需要运行中的 PostgreSQL 服务器。
启动一个 PostgreSQL 服务器
$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15
启动一个 Odoo 实例
$ docker run -p 8069:8069 --name odoo --link db:db -t odoo
运行 Postgres 的容器的别名必须为 db,以便 Odoo 能够连接到 Postgres 服务器。
停止并重新启动一个 Odoo 实例
$ docker stop odoo
$ docker start -a odoo
使用命名卷来保存数据
当按照上述描述创建 Odoo 容器时,odoo 文件存储区会在容器内部创建。如果容器被删除,文件存储区将丢失。防止这种情况的首选方法是使用 Docker 命名卷。
$ docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo
使用上述命令,名为 odoo-data 的卷即使容器被移除也将持续存在,并且可以通过发出相同命令来重新使用。
作为卷的挂载点使用的路径 /var/lib/odoo 必须与配置文件中或作为 CLI 参数的 odoo data_dir 相匹配。
请注意,同样的原则适用于 Postgresql 容器,并且可以使用命名卷在删除容器时保留数据库。因此,数据库容器可以像这样启动(在 odoo 容器之前):
$ 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
停止并重新启动 PostgreSQL 服务器
当 PostgreSQL 服务器重新启动时,链接到该服务器的 Odoo 实例也必须重新启动,因为服务器地址已更改,链接因此中断。
重新启动 PostgreSQL 服务器不会影响已创建的数据库。
使用自定义配置运行 Odoo
服务器的默认配置文件(位于 /etc/odoo/odoo.conf )在启动时可使用卷进行覆盖。假设您在 /path/to/config/odoo.conf 有一个自定义配置,那么
$ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo
请使用此配置模板编写您的自定义配置,因为我们已经为在 Docker 容器中运行 Odoo 设置了一些参数。
您也可以直接在命令行中内联指定 Odoo 参数。这些参数必须在命令行中关键字 -- 之后给出,如下所示
$ docker run -p 8069:8069 --name odoo --link db:db -t odoo -- --db-filter=odoo_db_.*
安装自定义插件
您可以在 Odoo 容器内安装您自己的 Odoo 插件,在 /mnt/extra-addons
$ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo
注意:虽然没有官方的 Odoo 企业版 Docker 镜像,但可以使用上述提到的方法挂载企业模块。
运行多个 Odoo 实例
$ docker run -p 8070:8069 --name odoo2 --link db:db -t odoo
$ docker run -p 8071:8069 --name odoo3 --link db:db -t odoo
注意:对于邮件和报告功能的普通使用,当主机和容器端口不同(例如 8070 和 8069)时,在 Odoo 中,必须将 Settings->Parameters->System Parameters (需要技术特性),web.base.url 设置为容器端口(例如 127.0.0.1:8069)。
环境变量
调整这些环境变量以轻松连接到 PostgreSQL 服务器:
HOST:postgres 服务器的地址。如果您使用了 postgres 容器,将其设置为容器的名称。默认为db。PORT:Postgres 服务器正在监听的端口。默认为5432。USER:Odoo 将用于连接的 postgres 角色。如果您使用了 postgres 容器,则将其设置为与POSTGRES_USER相同的值。默认值为odoo。PASSWORD:Odoo 用于连接的 postgres 角色的密码。如果您使用了 postgres 容器,将其设置为与POSTGRES_PASSWORD相同的值。默认值为odoo。
Docker Compose 示例
最简单的 docker-compose.yml 文件会是:
version: '3.1'
services:
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
如果默认的 postgres 凭证不适合您,请调整环境变量:
version: '3.1'
services:
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
这里有最后一个示例向您展示如何
- 将位于
./addons的自定义插件进行挂载 - 使用位于
.config/odoo.conf的自定义配置文件 - 将 Odoo 和 postgres 数据目录使用命名卷
-
使用名为
odoo_pg_pass的secrets文件,该文件包含两个服务共享的 postgreql 密码version: '3.1' services: 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
要启动您的 Odoo 实例,请进入您从前面的示例中创建的 docker-compose.yml 文件所在的目录,并输入:
docker-compose up -d
如何升级此图像
Odoo 镜像会定期更新,以使其使用最新版本(Odoo 每个版本的新版本每晚都会构建)。请注意,以下内容是关于在同一主要版本内从旧版本升级到提供的最新版本,因为从一个主要版本升级到另一个主要版本是一个更为复杂的过程,需要精心编写的迁移脚本(请参阅 Odoo 升级页面或此旨在编写这些脚本的社区项目)。
假设您从名为 old-odoo 的 Odoo 实例创建了一个数据库,并且您想要从名为 new-odoo 的新 Odoo 实例访问此数据库,例如因为您刚刚下载了一个更新的 Odoo 镜像。
默认情况下,Odoo 16.0 及以上版本使用文件存储(位于 /var/lib/odoo/filestore/ )来存储附件。您应通过运行来在新的 Odoo 实例中恢复此文件存储。
$ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo
许可证
查看此映像中所包含软件的许可证信息。
与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 odoo/ 目录中找到。
对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。