踩坑无数,踩到最后没有需求了,最终还是停留在了搭建完成的那一刻。

详细部署过程没多做记录。以下是一些路上遇到的坑:

一、关于安装版本

odoo有许多个版本可以安装,有编译好的适合各个平台的安装包(deb文件,windwos程序(官方说问题较多))和鲜少提及但始终保持更新的docker版本。也是本站准备部署在服务器的版本。

至于使用宝塔面板,纯粹是因为没服务器用了就那台,而已经部署了宝塔。

【宝塔其实官方自带有了一键部署odoo应用,但是是完全基于docker部署的,不管是odoo主程序还是数据库文件postgreSQL都是docker】,因此我不太想用,可能强迫症吧,而且其本身有又明确的PostgreSQL

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_1
www_waoww_com_1754674608

所以,想直接基于此来部署。

二、解决2个问题

1、Odoo容器内无法直接连接外部服务器环境的PostgreSQL

这里走了许多弯路,

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_2
www_waoww_com_1754674703

最终的解决办法:

  1. 在环境变量中设置为宿主机IP,即:服务器IP地址

附上我的环境变量,可以在建完容器后再修改添加即可。

HOST=你的IP
PORT=5432
USER=odooerp
PASSWORD=TNJB9&pU7K08wZO5
DB=postgres

//这是容器安装时默认会添加上的不用填进去
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
LANG=en_US.UTF-8
ODOO_VERSION=18.0
ODOO_RC=/etc/odoo/odoo.conf

2、连接数据库后用户没有创建数据库的权限

这里,主要是很多人会在宝塔PostgreSQL选项上直接创建数据库,然后填写这里创建的数据库用户名和密码到上述的环境变量中,这会导致无即时你打开的odoo的配置页面,当让你创建数据库时,你将被Acees denied,

这里的正确做法是必须使用命令行:

 创建 Odoo 专用数据库用户(并赋予创建数据库权限)

这个用户跟宝塔创建的数据库实例不一样,前者是用于管理数据库的,后者是数据库内管理的。

命令如下:

1、登录 PostgreSQL(假设宝塔默认用户是postgres,密码在面板中可查):

psql -U postgres -h 127.0.0.1

2、执行 SQL 创建用户(例如用户名为odoo,密码odoo123),并赋予创建数据库权限:

— 创建用户

CREATE USER odoo WITH PASSWORD ‘odoo123’;

— 赋予创建数据库权限(Odoo初始化时需要创建数据库)

ALTER USER odoo CREATEDB;

退出:

\q

3、确认用户已创建并拥有权限:

\du odoo

4、创建成功后:

           List of roles
 Role name | Attributes | Member of 
-----------+------------+-----------
 myodoo    | Create DB  | {}

5、然后将你创建的用户名和密码,填入到上述#env中了

三、权限开放

1、开放数据库读写权限

在你解决了上述2个问题后,你还需要开放数据库权限和配置下PostgreSQL的安全认证。‘

开放权限为所有人 – -因为odoo是从IP访问的,所以你可能还需要放行端口

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_3
www_waoww_com_1754675549

2、开放postgresql的安全认证

如下:把你创建的用户添加到这里去,当然,地址这里你可以仅填写你容器内网IP的地址。

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_4
www_waoww_com_1754675649

3、要保存下这里的配置:

这里要保存下,不然配置不会生效。

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_5
www_waoww_com_1754675721

三、其他注意事项

postgresql管理器也可以新增数据库,其实都是一样的:

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_6
www_waoww_com_1754675800

但是,没必要在这里新增数据库,这里新增和在宝塔数据库那一排新增是一样的,但是这里新增的权限好像会出现和在数据库新增的权限冲突/配置不一致的情况。:

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_7
www_waoww_com_1754675855

如果你实在已经新增了也用上了,那么你可以从数据库这里让他显示出来:

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_8
www_waoww_com_1754675940

建议:先把Docker镜像拉到本地,再创建容器:

Odoo 宝塔面板的部署指南-基于Docker和宝塔自带的PgSQL数据库_img_9
www_waoww_com_1754675983

其他的,慢慢摸索吧。