
数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载Odoo 是业界广受欢迎的开源 ERP 系统号称把全部业务放到一个平台。本文基于 Pigsty 仓库中 app/odoo 应用目录 的官方部署文档完整讲解如何在 Pigsty 节点上一键安装、配置并运行 Odoo并将其数据库落在 Pigsty 托管的 PostgreSQL 集群之上。读完本文你将掌握Pigsty 应用配置模板的编写方法、app.yml应用安装流水线的底层机制、Odoo 的 docker-compose 服务编排细节以及社区 Addons 的安装与启用流程。Odoo 与 Pigsty 的集成概览Odoo 是一套开源的企业资源计划ERP软件覆盖 CRM、销售、采购、库存、会计、人力资源等完整业务模块。Pigsty 将其作为应用层App Layer的一员与 PostgreSQL 数据库集群深度绑定Odoo 本身以 Docker 容器方式运行数据则存放在 Pigsty 管理的 PostgreSQL 实例中从而获得 Pigsty 在高可用、监控、备份等方面的全部能力。仓库中 app/odoo 目录提供了完整的部署资源包括docker-compose.ymlOdoo 容器与初始化容器的编排模板Makefileinit、up、down、logs等日常管理快捷命令配套配置模板 conf/app/odoo.yml定义应用参数、数据库集群与 nginx 门户。按默认配置Odoo 以端口8069对外提供服务可通过http://ip:8069直接访问默认登录账号为admin默认密码为admin。此外 Pigsty 还会通过 nginx 门户提供域名转发详见下文基础设施门户配置一节。注意默认口令admin/admin仅用于首次登录正式上线前务必在应用配置与 PostgreSQL 用户侧一并更换强口令。快速开始一条命令启动 Odoo第一步安装 Pigsty 并选用 Odoo 配置模板按官方文档流程先使用 Odoo 配置模板完成标准 Pigsty 单节点或按需多节点安装curl -fsSL https://repo.pigsty.io/pig | bash pig sty init # init pigsty directory pig sty boot # prepare local repo ansible pig sty conf -c app/odoo # use the odoo 1-node config template pig sty install # begin installation这里pig sty conf -c app/odoo的作用是将仓库内的 conf/app/odoo.yml 拷贝为当前环境的pigsty.yml主配置。该模板定义了一个1 节点 Odoo 应用 PostgreSQL 数据库的最小拓扑其全局变量部分包括vars: # global variables version: v4.5.0 # pigsty version string admin_ip: 10.10.10.10 # admin node ip address region: default # upstream mirror region: default|china|europe node_tune: oltp # node tuning specs: oltp,olap,tiny,crit pg_conf: oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml docker_enabled: true # enable docker on app group pg_version: 18其中docker_enabled: true是关键开关——它让目标节点在后续docker.yml阶段获得 Docker 运行时node_tune: oltp与pg_conf: oltp.yml则分别为操作系统与 PostgreSQL 套用面向在线事务处理的调优规格。第二步安装 Docker 并启动 OdooPigsty 安装完成后依次执行两个 playbook./docker.yml # install configure docker docker-compose ./app.yml # install and launch odoo with docker-composedocker.yml 负责在节点上安装并配置 Docker 运行时包括创建数据目录、生成 daemon 配置、启动 systemd 服务、加载/tmp/docker/*.tgz镜像缓存等由dockerrole 完成app.yml 负责把 app/odoo 目录中的编排资源拷贝到/opt/odoo写入.env配置并拉起容器。执行完毕后Odoo 即运行在http://ip:8069。此时还可以在/etc/hosts中为节点添加一条静态记录如10.10.10.10 odoo.pigsty即可通过 nginx 80/443 门户以http://odoo.pigsty访问。一个值得注意的运维细节若要再创建第二个 Odoo 数据库需要先将odoo数据库用户临时提升为超级用户superuser才能完成建库动作。配置模板深度解析仓库中 conf/app/odoo.yml 是部署 Odoo 的官方配置模板也是理解Pigsty 如何描述一个应用的最佳范例。它由两个核心部分构成应用定义odoo组与数据库定义pg-odoo组。应用定义odoo 组# the odoo application (default username password: admin/admin) odoo: hosts: { 10.10.10.10: {} } vars: app: odoo # specify app name to be installed (in the apps) apps: # define all applications odoo: # app name, should have corresponding ~/pigsty/app/odoo folder file: # optional directory to be created - { path: /data/odoo ,state: directory, owner: 100, group: 101 } - { path: /data/odoo/webdata ,state: directory, owner: 100, group: 101 } - { path: /data/odoo/addons ,state: directory, owner: 100, group: 101 } conf: # override /opt/app/.env config file PG_HOST: 10.10.10.10 # postgres host PG_PORT: 5432 # postgres port PG_USERNAME: odoo # postgres user PG_PASSWORD: DBUser.Odoo # postgres password ODOO_PORT: 8069 # odoo app port ODOO_DATA: /data/odoo/webdata # odoo webdata ODOO_ADDONS: /data/odoo/addons # odoo plugins ODOO_DBNAME: odoo # odoo database name ODOO_VERSION: 19.0 # odoo image version其中app: odoo指定要安装的应用名app.yml会据此在apps字典中查找定义apps.odoo.file可选目录清单app.yml会在安装时按此创建目录并设置 owner/group。注意owner: 100与group: 101正是官方 Odoo 镜像中odoo用户的 uid/gid确保容器对挂载目录具备写权限apps.odoo.conf以键值对形式覆盖/opt/odoo/.env文件即最终写入容器的运行时配置。各环境变量的含义与取值如下变量默认值说明PG_HOST10.10.10.10Odoo 连接的 PostgreSQL 主机地址PG_PORT5432PostgreSQL 端口PG_USERNAMEodoo数据库用户名与下方pg_users对应PG_PASSWORDDBUser.Odoo数据库密码部署前务必修改ODOO_PORT8069Odoo 对外暴露的 HTTP 端口ODOO_DATA/data/odoo/webdataOdoo 数据filestore挂载目录ODOO_ADDONS/data/odoo/addons第三方插件挂载目录ODOO_DBNAMEodoo默认数据库名ODOO_VERSION19.0Odoo 官方镜像版本标签数据库定义pg-odoo 组# the odoo database pg-odoo: hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } } vars: pg_cluster: pg-odoo pg_users: - { name: odoo ,password: DBUser.Odoo ,pgbouncer: true ,roles: [ dbrole_admin ] ,createdb: true ,comment: admin user for odoo service } - { name: odoo_ro ,password: DBUser.Odoo ,pgbouncer: true ,roles: [ dbrole_readonly ] ,comment: read only user for odoo service } - { name: odoo_rw ,password: DBUser.Odoo ,pgbouncer: true ,roles: [ dbrole_readwrite ] ,comment: read write user for odoo service } pg_databases: - { name: odoo ,owner: odoo ,revokeconn: true ,comment: odoo main database } pg_hba_rules: - { user: all ,db: all ,addr: 172.17.0.0/16 ,auth: pwd ,title: allow access from local docker network } - { user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title: allow grafana dashboard access cmdb from infra nodes } pg_crontab: [ 00 01 * * * /pg/bin/pg-backup full ] # make a full backup every 1am这段定义展示了 Pigsty 数据库规格spec的标准写法pg_cluster: pg-odoo创建一个独立的 PostgreSQL 集群实例pg_users预置三类业务用户——odoodbrole_admin管理角色附带createdb权限供 Odoo 连接使用、odoo_ro只读角色、odoo_rw读写角色三者均启用pgbouncer连接池pg_databases创建名为odoo的数据库属主为odoo并设置revokeconn: true撤销 PUBLIC 连接权限仅授权用户可连pg_hba_rules为 Docker 桥接网段172.17.0.0/16放行密码认证——这是容器访问宿主 PostgreSQL 的关键规则同时为dbuser_view放行 infra 节点的监控大盘访问pg_crontab注册每日凌晨 1 点执行pg-backup full全量备份的定时任务让业务数据天然获得 Pigsty 的备份保障。基础设施门户配置模板中还包含 nginx 门户转发定义让 Odoo 挂到 Pigsty 的 80/443 入口下infra_portal: # domain names and upstream servers home : { domain: i.pigsty } minio : { domain: m.pigsty ,endpoint: ${admin_ip}:9001 ,scheme: https ,websocket: true } odoo: # nginx server config for odoo domain: odoo.pigsty # REPLACE WITH YOUR OWN DOMAIN! endpoint: 10.10.10.10:8069 # odoo service endpoint: IP:PORT websocket: true # add websocket support certbot: odoo.pigsty # certbot cert name, apply with make cert通过infra_portal.odooPigsty 会在 nginx 中生成odoo.pigsty的 Server 配置把请求转发到10.10.10.10:8069并开启 WebSocket 支持Odoo 的实时通信依赖它certbot: odoo.pigsty表示后续可用make cert一键申请并挂载该域名的 TLS 证书。正式部署时应将域名替换为你自己的域名。app.yml应用安装的底层流水线要真正理解配置怎么写、资源放哪里需要读一下 app.yml 这个通用应用安装 playbook。它的执行逻辑分四步对应四个 task 标签app_install把app/appname/目录整体拷贝到/opt/appname/app_file按apps.app.file清单创建目录/文件仅当清单非空时执行app_config把apps.app.conf中的键值逐行写入/opt/appname/.env以lineinfile按KEY精确匹配替换create: yes允许首次创建权限0600保护密钥app_launch进入/opt/appname执行make默认参数由app.args指定缺省即make default。对应地app/odoo/Makefile 中的默认目标是default: init up view因此app.yml拉起 Odoo 时会依次完成初始化、启动与提示输出。Makefile 还封装了一整套日常运维命令init: docker compose --profile init up odoo-init # 初始化目录与数据库 schema dir: mkdir/chown /data/odoo 系列目录 # 准备数据目录uid 100 / gid 101 up: docker compose up -d # 启动服务 down: docker compose down # 停止并移除容器 stop/start/restart/pause/resume: 常规容器生命周期管理 pull: docker compose pull # 拉取镜像 logs: docker compose logs -f # 跟踪日志 save/load: docker save/load 镜像到 /tmp/docker/odoo.tgz # 离线搬运镜像其中save/load两个目标特别适合离线环境在有网节点make save导出镜像压缩包拷贝到目标机后make load即可载入无需直连镜像仓库。docker-compose 服务编排详解app/odoo/docker-compose.yml 是整个应用的核心编排文件由两个服务组成。odoo 主服务name: odoo services: odoo: container_name: odoo image: odoo:${ODOO_VERSION} ports: - ${ODOO_PORT}:8069 environment: - HOST${PG_HOST} - PORT${PG_PORT} - USER${PG_USERNAME} - PASSWORD${PG_PASSWORD} volumes: - ${ODOO_DATA}:/var/lib/odoo - ${ODOO_ADDONS}:/mnt/extra-addons要点镜像使用官方odoo:version标签版本由.env中的ODOO_VERSION决定环境变量HOST/PORT/USER/PASSWORD直接映射到.env中的PG_*四项这是 Odoo 镜像约定好的数据库连接参数两个挂载卷分别对应 Odoo 的 filestore/var/lib/odoo与第三方插件目录/mnt/extra-addons目录所有权须为 uid 100/gid 101注释行#- ./config:/etc/odoo提示可额外挂载自定义配置文件目录。odoo-init 初始化服务odoo-init: image: odoo:${ODOO_VERSION} profiles: [init] command: [ odoo, --stop-after-init , --initbase , -d, ${ODOO_DBNAME} ] #--without-demo environment: - HOST${PG_HOST} - PORT${PG_PORT} - USER${PG_USERNAME} - PASSWORD${PG_PASSWORD} restart: no这是一个使用profiles: [init]标记的一次性初始化容器默认情况下docker compose up不会启动它避免重复初始化需要初始化数据库 schema 时显式执行docker compose --profile init up odoo-init或make init其命令含义是--stop-after-init初始化完成后立即退出、--initbase仅初始化 base 模块、-d odoo目标数据库名来自ODOO_DBNAME如需跳过演示数据可追加--without-demorestart: no确保任务型容器退出后不会被反复拉起。Odoo Addons 插件扩展Odoo 生态拥有大量社区模块AddonsPigsty 部署方案将其挂载点固定为/data/odoo/addons即容器内的/mnt/extra-addons。安装第三方模块的完整流程如下。1. 准备插件目录mkdir -p /data/odoo/addons; chown 100:101 /data/odoo/addons将下载的社区模块放入该目录后重启 odoo 容器使其被识别。2. 进入开发者模式启用模块前需要先打开开发者模式。路径为Settings → Generic Settings → Developer Tools → Activate the developer Mode3. 更新应用列表并安装进入Apps → Update Apps List刷新模块索引即可在应用列表中看到新增的社区模块并在线安装。社区中有大量免费模块可供选用例如 Accounting Kit会计工具包等。需要说明的是Addons 的安装粒度取决于模块本身对数据库的依赖——涉及数据模型的模块会在安装时自动向 PostgreSQL 写入对应表结构这正是它需要odoo用户具备dbrole_admin与createdb权限的原因。运维要点与安全建议基于 conf/app/odoo.yml 与 app.yml 的实现细节汇总几条上线前必做的动作更换所有凭据模板注释明确要求修改PG_PASSWORD、grafana_admin_password、pg_admin_password、pg_monitor_password、pg_replication_password、patroni_password、haproxy_admin_password等口令切勿使用模板默认值上线确认网络规则pg_hba_rules中172.17.0.0/16放行的是 Docker 默认桥接网段若你自定义了 compose 网络或开启了 Docker 多网段需按实际网段调整利用备份能力模板内置pg_crontab: 00 01 * * * /pg/bin/pg-backup full每日全备也可在 Pigsty 面板中查看备份状态与 PITR 能力门户与证书将infra_portal.odoo.domain换成真实域名后用make cert申请证书即可获得 HTTPS 访问数据库超管约束Odoo 建库依赖超管权限日常运行建议保持odoo用户的普通管理角色仅在需要新增数据库时临时提权。至此你已经掌握从零搭建一套Odoo Pigsty PostgreSQL完整业务平台的完整链路从配置模板、应用流水线、容器编排到插件扩展与运维加固均可直接照此落地。赞分享数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载相关推荐Pigsty 自托管 DifyDocker Compose 模板 外部 PostgreSQL/pgvector 的完整部署指南Pigsty 自托管 DifyDocker Compose 模板 外部 PostgreSQL/pgvector 的完整部署指南 本指南以 app/dify数据库运维云原生高可用监控Pigsty 集成 NocoDB 部署指南用外部 PostgreSQL 自托管开源 Airtable 替代方案Pigsty 集成 NocoDB 部署指南用外部 PostgreSQL 自托管开源 Airtable 替代方案 本篇技术指南讲解如何在 Pigsty 项目中以数据库运维云原生高可用监控YouTube.js 日志系统指南Log 命名空间的 Level 级别、warnOnce 与 setLevel 实战详解YouTube.js 日志系统指南Log 命名空间的 Level 级别、warnOnce 与 setLevel 实战详解 导读 YouTube.jsyout数据库运维云原生高可用监控上一篇3层流水线架构UniGif如何重构Unity动态图像处理标准下一篇7个革命性技巧用Cherry Studio实现浏览器AI效率飞跃创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考