odoo简介和部署方式
OpenERP的前身,开源,功能强大,更新版本到14,官方有几种安装方法,使用docker方法部署更简单,而官方使用docker compose的方式启动,我希望postgressql能够提供给多个应用使用,可以通过外部方法来访问,所以我这里用portainer部署。
部署postgres
下载portgres镜像
首先确定好postgresql的版本,这里使用postgres:12,直接执行docker pull postgres:12
下载镜像
portainer上配置postgres容器参数
postgres docker官方镜像有参数说明:https://hub.docker.com/_/postgres?tab=description,根据odoo docker官网镜像说明,其中的yaml配置上环境参数只配置了下面几个,所以potainer上也设置这几个参数即可
1 | environment: |
portainer对应配置:
其中额外配置了port映射,postgres数据库端口默认是5432,使用宿主机的5432到docker主机的5432端口,PGDATA并没有配置,是默认生成的,与上面的有点不一样,手动配置了volume映射。
配置后生成container,可以在portainer上看到running。
使用navicat连接到数据库测试:
测试成功!
部署odoo
下载odoo镜像
使用最新镜像,最新版为14docker pull odoo:latest
portainer上配置odoo容器参数
官方docker-compose.yaml配置:
1 | web: |
portainer对应配置:
配置后生成container,在浏览器输入http://宿主ip:8069访问,出现500错误。从portainer上查看日志,发现这里配置的odoo数据库需要初始化,需要运行odoo -i base强制初始化。这一步搞了我很久,网上也没有详细的解决方法,这里记录下解决方法。
- 拷贝容器内的odoo.conf配置文件到本机:
先进入映射的volume配置文件目录运行:docker exec home_odoo cat /etc/odoo/odoo.conf > odoo.conf
修改配置文件,手动修改数据库连接参数:
vim odoo.conf
1
2
3
4
5
6[options]
db_host=xxx
db_port=xxx
db_name=odoo_db
db_user=odoo
db_password=odoo从portainer进入odoo的容器执行:
odoo -i base -d odoo_db
这里没有指定用户执行,默认就是使用环境配置的odoo用户,也只有该用户执行才生效。
执行完毕后,再次访问http://宿主ip:8069,就会出现登录界面啦。默认登陆用户名和密码都是admin,记得进入修改。
注意事项
这里有必要记录下docker容器目录映射到宿主目录的权限问题,以免映射后出现权限报错。一般来说,生成容器后,里面的应用目录有固定的用户权限。如postgres,生成容器后,默认数据库目录属主和属组都是postgres,而查看其ID为999
而回到宿主的对应映射目录,可以看到其ID是跟容器的用户ID一样的。
其ID对应宿主的用户名字不一样,其实是LINUX使用ID号作为唯一权限代码。但宿主机上如果没有对应的ID号,则会显示容器的ID号。宿主机建立目录后且映射后,不要修改其属主和属组,不然权限就乱套了。也可以在宿主机上新建一个ID号如useradd postgres -u 1000 -g 1000 -M -s /sbin/nologin
,专门给容器使用,在配置容器时,添加其environment参数如PUID=1000,PGID=1000,其参数名要看官方给出的名字来指定,让容器指定使用该ID号生成用户。这样无论从容器看还是宿主机看,都是postgres的名字了。
odoo使用记录
手动导入第三方安装包
首先要启用开发者模式,点击设置,常规设置,到最下面,点击启用开发者模式
启用后,进入应用,右上角取消搜索,就会显示全部的应用,在搜索base,可以见到base_import模块,安装下就会在菜单栏多一个导入模块,就可以手动导入第三方应用啦。